我有一个为您创建人实体数据历史的示例。希望能帮助到你。
我必须建立一个 辅助界面 :
public interface DataHistoryAware { public DataHistory getDataHistory(); public void setDataHistory(DataHistory dataHistory);}这是 侦听器的实现 :
public class DataHistoryListener { @PrePersist public void setCreateDataHistory(DataHistoryAware model) { //set creationDate DataHistory dataHistory = model.getDataHistory() == null ? new DataHistory() : model.getDataHistory(); dataHistory.setCreationDate(new Date()); model.setDataHistory(dataHistory); }@PostUpdate public void setUpdateDataHistory(DataHistoryAware model) { DataHistory dataHistory = model.getDataHistory() == null ? new DataHistory() : model.getDataHistory(); dataHistory.setLastModificationDate(new Date()); model.setDataHistory(dataHistory); }}该 人士实体 :
@Entity@EntityListeners(DataHistoryListener.class)@Table(name="person")public class Person implements Serializable, DataHistoryAware {@Column(name = "full_name", length = 255, nullable = false) private String fullName;@oneToOne(cascade = CascadeType.PERSIST)@JoinColumn(name = "data_history_id", nullable = false)private DataHistory dataHistory;public String getFullName() { return this.fullName; } public void setFullName(String fullName) { this.fullName = fullName; }public DataHistory getDataHistory() { return dataHistory; } public void setDataHistory(DataHistory dataHistory) { this.dataHistory = dataHistory; }}此实现在持久之前为人实体创建数据历史记录,并在合并之前对其进行更新。datahistory属性具有非空约束,因此这与联系人实体的非空属性的问题相同。希望它有用。



