Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate/JPA-更新一个实体字段,该字段还包含一个带有@Future的日期字段_Java_Mysql_Hibernate_Save - Fatal编程技术网

Java Hibernate/JPA-更新一个实体字段,该字段还包含一个带有@Future的日期字段

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

我有一个实体,它的日期字段用@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")
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;

}