我正在使用Spring Boot创建API,并且每当尝试使用PUT端点时,时间戳@UpdateTimestamp
都会自动获取更新时间。当我更改状态以外的任何其他字段时,我不希望时间更新。以下是模型。
@CreationTimestamp
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "start_time", updatable = false, nullable = false)
Timestamp creationTime;
@UpdateTimestamp
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "update_time")
Timestamp updateTime;
@Column(name = "first_name")
String first_name;
@Column(name = "last_name")
String last_name;
@Column(name = "age")
String age;
@Column(name = "mobile_number")
String mobile_number;
@Enumerated(EnumType.ORDINAL)
@Column(name = "status")
private StatusEnum status;
StatusEnum具有
public enum StatusEnum {
AVERAGE, FAIL , GOOD , EXCELLENT ;
}
当我尝试更新age或mobile_number或任何其他字段时,update_time自动获取当前时间(即更新时间),但是我不希望自动更新。我只想在更新状态字段时更改update_time
。如何实现???
谢谢!
答案 0 :(得分:1)
当我更改状态以外的任何其他字段时,我不希望时间更新。 ... 如何实现?
您不使用@UpdateTimestamp
执行此操作。
@UpdateTimestamp
的目的是使时间戳记在每次保存实体时都进行更新,而无论发生什么更改。
正如Dinar Zaripov在评论中所写,解决此问题的正确方法是编写您自己的实体侦听器,如此处https://discourse.hibernate.org/t/what-is-the-order-of-properties-when-calling-getdirtyproperties-from-postupdateevent/975/2所述获取更新的字段列表,并相应地修改您的实体。