Java Hibernate/JPA-更新一个实体字段,该字段还包含一个带有@Future的日期字段
我有一个实体,它的日期字段用@Future注释。我最初使用repository.save(data)以给定的日期(比如明天的日期5/31/21)创建记录/事务很好Java Hibernate/JPA-更新一个实体字段,该字段还包含一个带有@Future的日期字段,java,mysql,hibernate,save,Java,Mysql,Hibernate,Save,我有一个实体,它的日期字段用@Future注释。我最初使用repository.save(data)以给定的日期(比如明天的日期5/31/21)创建记录/事务很好 public class data{ @Future private Date date; private String status; } 2021年5月31日 data data = new data(LocalDateTime.now(), "initialstatus") reposit
public class data{
@Future
private Date date;
private String status;
}
2021年5月31日
data data = new data(LocalDateTime.now(), "initialstatus")
repository.save(data);
然后,我在6/1/21更新了另一个名为“状态”的字段,但当我进行更新时,我得到一个错误,事务无法提交,我猜是因为它试图在6/1/21的@Future date字段中保存5/31/21日期(此时不是未来日期),同时尝试更新状态字段
2021年6月1日
data data = repository.findById(id).get();
data.setStatus("updatedstatus");
repository.save(data);
一旦删除@Future,我就可以更新状态字段,所以我的问题是如何只更新状态字段而不更新日期字段,因为日期现在已经过去了。如果您只需要使用验证组在插入时进行验证,似乎可以这样做。
这是否回答了您的问题:?尝试将
@列的注释的可更新属性设置为false
:
@Column(updatable= false)
@Future
private Date date;
updateable
属性指示Hibernate从生成的UPDATE
SQL语句中省略此列。您可以使用@DynamicUpdate。实体将使用动态sql生成,其中仅引用更改的列
@DynamicUpdate
public class data{
@Future
private Date date;
private String status;
}
是的,团队可以工作,我只是不想为了做一件简单的事情而组建一个团队(或者至少我希望是简单的)
@DynamicUpdate
public class data{
@Future
private Date date;
private String status;
}