我有一个为您创建数据历史记录的示例.希望能帮助到你.
我不得不做一个帮手界面:
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;
}
}
此实现在持久化之前为person实体创建数据历史记录,并在合并之前更新它. datahistory属性具有非null约束,因此这与您使用联系人实体的not-null属性的问题相同.希望它有用.