Я хочу обновить свою сущность.
Я использую JPA и вызываю метод EntityManger.merge.
Объект помечен аннотацией @PreUpdate, которая устанавливает системную дату в объекте.
Это метод DAO, который я вызываю для выполнения обновления:
@PersistenceContext(unitName = "myPersistentUnit")
protected EntityManager em;
@Override
public T update(T entity) throws MyException {
try {
return em.merge(entity);
} catch (Exception e) {
throw new MyException(e);
}
}
Это сущность, которую я хочу обновить:
@Entity
@Table(name = MyEntity.TABLE_NAME)
public class MyEntity {
public static final String TABLE_NAME = "MY_TABLE_NAME";
// other properties
@Column(name = "TIMESTAMP_LAST_UPDATE", nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Date timestampLastUpdate;
@PreUpdate
public void preUpdate() {
this.setTimestampLastUpdate(new Date());
}
// getters and setters
}
Я ожидаю, что метод DAO
return em.merge(entity)
возвращает обновленную сущность с обновленным свойством "timestampLastUpdate", но это не так.