我有一个带有spring Boot(v2.3.3)和spring数据的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
因此,基本上,任何名称和地址的变化都应在评估表中进行审计,版本应递增。
我见过用于审计的Hibernateenvers,但需要创建一个新的审计表,因此我不能将其插入评估表中,也不知道如何生成版本号。
我可以通过编程的方式编写html" target="_blank">代码来实现这一点,但是还有其他可用的审计工具可以实现吗?
提前谢谢
如果支持trigger,请尝试trigger,因为它将涵盖直接从DB更新的案例。
主实体应该有Id、名称、地址(而不是版本)列。你应该把@Audit放在实体上。之后,应该生成数据库表脚本(例如,请参见org.hibernate.tool.hbm2ddl.SchemaExport中的方法main)。您将在脚本中看到main和archive表(带有_aud后缀)。它将包含Id、姓名、地址和版本。rev字段是您的版本。当您在主实体中将名称更改为Ryan并提交时,envers会自动向存档表中添加一个新条目。
我不确定你的期望是什么。你为什么要用工具?就像恩弗斯。
这个问题与自动化和数据库有关,所以首先考虑的是触发器。
也许最简单也是最好的方法就是写一个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
*/
}
...
或者使用hiberNate@PostUpdate注释。
我相信你会在docs/google中找到它的详细信息。
问题内容: 我正在为项目使用Spring Data JPA和Spring Boot。 我对对象(创建/更新/删除)有审计要求。我可能还需要获取特定对象的审核修订。我已经在网上检查过Spring Data Envers无法获得修订并且不跟踪删除? 所以我的问题是: 1)我们可以将Hibernate Envers与Spring数据JPA集成吗? 2)我们有本机查询,HQL和Spring数据JPA更新/
由于我是审计新手,请让我了解以上问题。 谢谢你。
我目前正在从事一个利用Spring数据Neo4j的项目。每当创建节点时,我都希望创建一个包含创建日期和用户的引用审核节点。 我提出的一个解决方案是编写一个AOP方面,它与我的服务层的create方法挂钩。这对于没有级联的实体很好,但是级联的实体呢?它们没有在我的服务层中显式传递,因此我的AOP类不会拦截它们。JPA中是否有类似实体侦听器的概念,或者如何连接到该机制中?
我挣扎了两天试图解决这个问题,我不知道我还能做什么。在我将< code>@Audit包含在实体中之前,我的系统工作得非常好。当然,我在。pom文件。 我已经尝试过这些帖子: Hibernare envers Audit with Spring data JPA 和 Spring Boot Spring-data-enverHibernatejava.lang.NoSuch方法错误:org.hibe
问题内容: 是否可以使用Spring Data JPA(由Hibernate作为JPA提供者支持)并同时直接使用Hibernate? 问题是,当我使用JpaTransactionManager时,无法使用检索当前会话。当我切换到HibernateTransaction Manager时,JPA存储库无法提交更改。 这是我的Spring上下文的一部分(在该上下文中,我无法使用直接的Hibernate
我知道SpringDataJPA使用Hibernate,但是,我有一些问题需要澄清。 > 与使用hibernate会话和HQL相比,使用@Query编写自定义查询有哪些优势? 使用SpringDataJParepository查询方法和使用HibernateHQL之间有什么性能差异吗? 我在这里看到了其他类似的问题,他们没有回答这些问题。