Last update timestamp with JPA

java, jpa

Solution

Use @PrePersist and @PreUpdate annotations and write your own event listener.

Take a look at this answer for details. It's tagged as Hibernate but is applicable to any JPA provider.

Problem

I'm playing around a bit with JPA(Eclipselink to be specific). The below entity have a timestamp that's supposed to reflect whenever that entity was last updated. What are the strategies for making JPA update that timestamp automatically every time this entity is changed ? How would I go about if I also want a 'creation' timestamp, only set when the entity is first persisted, never allowed to be changed again ? ``` @Entity public class Item implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String note; public Item () { } @Id @GeneratedValue(strategy=SEQUENCE) @Column(unique=true, nullable=false) public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @Column(length=255) @Column(nullable=false) public String getNote() { return this.note; } public void setNote(String note) { this.note = note; } @Column(nullable=false) public Timestamp getUpdated() { return this.updated; } public void setUpdated(Timestamp updated) { this.updated = updated; } } ```

Original source

Related problems