java自动触发点击事件,java – 自动触发的默认侦听器之前的Fire Hibernate自定义事件侦听器...

该博客展示了如何通过实现DataHistoryAware接口和DataHistoryListener监听器,在持久化和合并实体时自动创建和更新数据历史记录。实体类如Person通过@EntityListeners注解关联监听器,确保dataHistory属性始终保持最新状态,包括创建日期和最后修改日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个为您创建数据历史记录的示例.希望能帮助到你.

我不得不做一个帮手界面:

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属性的问题相同.希望它有用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值