gpt4 book ai didi

java - 如何在 PreUpdate 事件上复制 mysql 行

转载 作者:行者123 更新时间:2023-11-29 11:50:58 26 4
gpt4 key购买 nike

我需要保留我的一张 table 上发生的任何更改的历史记录。我有两个具有完全相同架构的表,其中一个带有附加 id 列。如果 JPA 触发 PreUpdate 事件,我会尝试复制记录。我能够得到这个事件。但问题是我没有从数据库获取新记录,因为已经正在编辑相同的记录。

@PreUpdate
public void preUpdate(POItem item) {
try{
if(dao == null){
AutowireHelper.getInstance().autowire(this,this.dao);
}

POItem fresh = dao.find(POItem.class,item.getId());

logger.info("UPDATED");
logger.info(item.toString());

logger.info("CURRENT");
logger.info(fresh.toString());

}catch (Exception ex){
ex.printStackTrace();
}
}

我可以看到当前和更新的对象都持有相同的对象,以及将要提交的更改。

这里如何从sql表中获取新记录。

最佳答案

实现审计并不是一件容易的事。我的建议是不要自己实现。

如果您使用 hibernate ,则:
幸运的是,有一个名为 Hibernate Envers 的实体审计框架。所需要的只是一些 xml 配置并使用经过审核的注释标记实体。

甚至有 Spring data jpa 支持检索审计版本。
以下是一些有用的链接:
Hibernate 页面:http://hibernate.org/orm/envers/
引用实现:http://hantsy.blogspot.in/2013/11/auditing-with-hibernate-envers.html

关于java - 如何在 PreUpdate 事件上复制 mysql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34071887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com