2016-12-01 63 views
2

私はCrudRepositoryメソッドを呼び出すときにStudentエンティティより下にあり、null以外のフィールドのみを更新したいと思います。例えば;spring jpaリポジトリで特定のフィールドのみを更新するにはどうすればいいですか?

Student student = new Student(); 
student.setName("test"); 
student.setNumber("32323"); 
studentRepository.save(student); 

saveメソッドを呼び出すと、アドレスフィールドもNULL値に更新されます。私がしたいのは、 "それはnull値を持っている場合は、更新しない"です。これを行う方法はありますか?

@Entity 
@Table(name = "student") 
public class Student implements Serializable{ 

    @Id 
    @Column 
    private String name; 

    @Column 
    private String number; 

    @Column 
    private String address; 
    .... 
} 
+0

使用するsaveOrUpdate方法.. – Jobin

+0

方法を保存@Jobinも既存のレコードを更新します。私はあなたが意味するものは得られないのですか? – hellzone

+0

編集が必要な場合は、既存のエンティティを読み込み、関連するフィールドを更新します。同じ識別子を持つ新しいものを作成しないでください。そのような単純な。 –

答えて

2

私は学生主体の下に持っていると私はCrudRepositoryは、メソッドを保存呼び出したときに私だけではないヌル フィールドを更新します。

あなたは、更新操作のために春やJPAのエンティティを提供する際、このエンティティのいくつかのフィールドがnullである理由、彼らは推測することができないため、この方法でこれを行うことはできません

:設定したいので、それnullですnullへのフィールド?または、nullです。このフィールドを満たしていないが、既存の値を上書きしないようにしたいからです。
したがって、彼らはguesworksを作っておらず、エンティティのフィールドで有効な値で行を更新するだけです。

だから、あなたが明示的なフィールドが更新するJPQLクエリを記述する必要があります。

UPDATE Student e SET e.name=%1 AND e.number=%2 
WHERE ... 
関連する問題