Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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 无法在数据库更新时更新当前时间戳_Java_Hibernate_Spring Boot - Fatal编程技术网

Java 无法在数据库更新时更新当前时间戳

Java 无法在数据库更新时更新当前时间戳,java,hibernate,spring-boot,Java,Hibernate,Spring Boot,我有一个表,其中有一个日期字段,默认值为当前时间戳。当我在该表上创建一行时,这可以很好地工作 当我更新该行时,我希望时间戳会自动更新,但不会被更新。感谢你对我做错了什么的建议 这是我的实体类中的字段 // Date is of type import java.util.Date; @UpdateTimestamp // expecting this to do the auto update. @Temporal(TemporalType.TIMESTAMP) private Date u

我有一个表,其中有一个日期字段,默认值为当前时间戳。当我在该表上创建一行时,这可以很好地工作

当我更新该行时,我希望时间戳会自动更新,但不会被更新。感谢你对我做错了什么的建议

这是我的实体类中的字段

// Date is of type import java.util.Date;

@UpdateTimestamp // expecting this to do the auto update. 
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt; 
这是我的存储库界面上的查询

// I don't intend to pass in current timestamp as a 3rd param for updateAt field. I expect it to just auto update to current time stamp.
@Modifying
@Query("update table as t set t.title =?1 where t.Id = ?2")
void update(String title, long id);
上面的查询只更新标题和id,而不更新UpdateDate字段。在Entity类下也尝试了以下操作,这没有什么区别

@PreUpdate
protected void onUpdate(){
    updatedAt = new Date();
}

我怀疑这是正常行为,因为@PreUpdate是JPA/Hibernate特性。当您只是使用查询时,您只是调用“普通SQL”,而不是在Hibernate实体生命周期中。我环顾四周,发现了一些确凿的证据:

这里也回答了这个问题:

您确定应用程序中添加了此@EnableJPA审核批注吗?