I have the following class:
@Data
@Builder
public class SampleClass<String, String> {
@NonNull
String key;
@NonNull
String value;
}
Is there any way to add a timestamp for when the class is initialized and when the value is changed/edited/updated?
I have attempted adding:
@Temporal(TemporalType.TIMESTAMP)
private TimeStamp editedAt;
But does not seem to be what I am looking for.
You could achieve it with a few options. However, Lombok could not help you with it. You have to use other options.
You could use @CreationTimestamp
& @UpdateTimestamp
:
@Column
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date createAt;
@Column
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date editedAt;
Another way is to use @PrePersist
& @PreUpdate
:
@Data
@Builder
public class SampleClass {
// other fields
@Column
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@Column
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt;
@PrePersist
protected void onCreate() {
createdAt = new Date();
}
@PreUpdate
protected void onUpdate() {
updatedAt = new Date();
}
}