我有一个以下的Student实体,当我调用CrudRepository save方法时,我想只更新非空字段。例如;
Student student = new Student();
student.setName("test");
student.setNumber("32323");
studentRepository.save(student);
当我调用save方法时它还将地址字段更新为空值。我想要做的是"如果它具有空值,则不要更新"。有没有办法做到这一点?
@Entity
@Table(name = "student")
public class Student implements Serializable{
@Id
@Column
private String name;
@Column
private String number;
@Column
private String address;
....
}
答案 0 :(得分:2)
我有一个以下的Student实体,我想只更新not null 我调用CrudRepository保存方法的字段。
您不能以这种方式执行此操作,因为当您向Spring或JPA提供实体以进行更新操作时,他们无法猜测为什么此实体的某些字段为空:是null
因为您想要将字段设置为null?或者是null
,因为您尚未完成此字段,但您不希望覆盖现有值?
因此,他们不会制作guesworks,只需在您实体的字段中使用有效值更新行。
因此,您应该编写一个JPQL查询,在其中显示要更新的显式字段:
UPDATE Student e SET e.name=%1 AND e.number=%2
WHERE ...