如何解决使用spring数据jpa和hibernate进行审核
我有一个带有Spring Boot(v2.3.3)和Spring Data的Spring Web应用程序。我有一个包含以下各列的表评估:
- 编号
- 名称
- 地址
- 版本
我的用例是表评估中名称和地址的任何更改,应创建一个新行,并以相同的ID递增版本。
因此,基本上仅当地址或名称被更新时,才应在评估表中插入新记录,如下所示:
现有记录:
Id - 23
Name - John
Address - Southend
Version - 1
例如,名称已更新为Ryan,应该有两行,如下所示:
Id - 23
Name - John
Address - Southend
Version - 1
Id - 23
Name - Ryan
Address - Southend
Version - 2
因此,基本上名称和地址的任何更改都应在评估表中进行审核,并且版本应增加。
我已经看到了用于审计的休眠引擎,但是需要创建一个新的审计表,因此我无法将其插入评估表中,而且我也不知道如何生成版本号。
我可以通过编程方式编写代码来实现这一目标,但是请问有没有其他可用的审计工具可以实现这一目标?
预先感谢
解决方法
我不确定您的期望是什么。 为什么要使用某些工具?像恩。
问题与自动化和数据库有关,因此首先想到的是触发。
Mabye最简单,最好的方法是只编写 PostUpdateEventListener 。
public class VersionUpdateEventListener
implements PostUpdateEventListener {
@Override
public void onPostUpdate(
PostUpdateEvent event) {
/*
1. getOldState() and getState()
2. check updated values
3. update version +1 or not
*/
}
...
或使用休眠 @PostUpdate 注释。
我确定您会在docs / google中找到详细信息。
,您的主要实体应具有ID,名称,地址(而非版本)列。并且您应该将@Audit放在实体上。之后,您应该生成数据库表脚本(例如,参见org.hibernate.tool.hbm2ddl.SchemaExport中的main方法)。 您将在脚本中看到主表和存档表(带_aud后缀)。它将包含ID,名称,地址,版本。 rev字段是您的版本。当您在主要实体中将名称更改为Ryan并提交时,envers会自动向存档表添加一个新条目。
,如果支持触发器,请尝试触发器,因为它将涵盖直接从数据库更新的案例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。