CreateUpdateBase.java
package com.tradecloud.common.base;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Base class for any entity that requires create/update time stamps.
*
* Currently this is handled by two event listeners configured in hibernate.cfg.xml
*
* However, once we move to JPA then the @PreUpdate and @PrePersist annotations should be sufficient
*
*/
@MappedSuperclass
public class CreateUpdateBase {
@Column(nullable = true)
protected Date created;
@Temporal(TemporalType.TIMESTAMP)
@Column(nullable = true)
protected Date updated;
@PrePersist
protected void onCreate() {
Date timeStamp = new Date();
updated = timeStamp;
created = timeStamp;
}
@PreUpdate
protected void onUpdate() {
updated = new Date();
}
public Date getCreated() {
return created;
}
public Date getUpdated() {
return updated;
}
/**
* TODO - remove the below once we get the @Preupdate and @PrePersist
* annotations working.
*/
public void setCreated(Date date) {
this.created = date;
}
public void setUpdated(Date date) {
this.updated = date;
}
}