问题标签 [spring-data-envers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1632 浏览

spring-data-jpa - 带有 Envers 的 Spring JPA

我正在尝试将 Spring JPA 与 Envers 一起使用来跟踪所有实体的审计跟踪,以便我们可以回到某个时间点并检查实体的内容。我可以使用 spring-jpa-envers api 提供的基本功能,例如查找 a/ll 修订版。

但是是否有可能:

  1. 查询带有过滤器的修订,即应用实体字段的过滤器?我想我们可以在修订返回后应用过滤器,但最好从某个时间点找到修订

  2. 更新特定版本?以防我们过去有错误的修订并想要更正它。

问候非盟

0 投票
1 回答
547 浏览

hibernate-envers - 使用 JPA Envers 的双时态审计数据

我们有一个使用双时态数据跟踪所有实体变化的应用程序。每个实体都有:

但是,在更新实体时,我们希望插入一条新记录并使用 isCurrent = false 更新旧记录,并使用当前日期时间更新 EffectiveTo 日期。

我可以用 Spring Jpa-Envers 实现这一点吗?

我尝试连接 Hibernate 拦截器,后来意识到我只能从拦截器中修改实体字段,除此之外别无他法。

我可以轻松地添加一个服务层来实现这一点,但听起来它不属于服务,因为它是一个横切关注点。

我们正在玩的另一个是自定义存储库并覆盖 save() 方法。

很感激你的想法。

0 投票
1 回答
7990 浏览

spring - Spring Data Envers org.springframework.data.mapping.PropertyReferenceException:找不到类型的属性 findRevisions

我有一个带有 Hibernate 5.2.6 和 Spring data Envers 1.0.5 的 Spring boot 1.4.2 应用程序。我正在审核我的实体,并且审核记录已正确保存。

我的应用程序配置类被注释为使用 EnversRevisionRepositoryFactoryBean.class 作为 JPA 存储库工厂。

应用程序配置

我正在尝试阅读被审计实体的修订。实体存储库扩展了 RevisionRepository。

实体模型

实体存储库

应用程序启动失败,因为由于 PropertyReferenceException 而无法初始化存储库。

原因:org.springframework.data.mapping.PropertyReferenceException:没有 找到类型 Foo 的属性 findRevisions! 在 org.springframework.data.mapping.PropertyPath.(PropertyPath.java:77) 在 org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329) 在 org.springframework.data.mapping.PropertyPath.create( PropertyPath.java:309) 在 org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272) 在 org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243) 在 org.springframework.data .repository.query.parser.Part.(Part.java:76) 在 org.springframework.data.repository.query.parser.PartTree$OrPart.(PartTree.java:235) 在 org.springframework.data.repository.query .parser.PartTree$Predicate.buildTree(PartTree.java:373) 在 org.springframework.data.repository.query.parser.PartTree$Predicate.(PartTree.java:353) 在 org.springframework.data.repository.query。 parser.PartTree.(PartTree.java:84) 在 org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:103) 在 org.springframework.data.jpa.repository.query.PartTreeJpaQuery.(PartTreeJpaQuery.java:63) 在org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:214) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:77) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.(RepositoryFactorySupport.java:435) at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:220) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:266) 在 org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:252) 在 org.springframework.data。 jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory。初始化Bean(AbstractAutowireCapableBeanFactory.java:1579)support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:252) at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods( AbstractAutowireCapableBeanFactory.java:1642) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579)support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:252) at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods( AbstractAutowireCapableBeanFactory.java:1642) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579)在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579) 调用InitMethods(AbstractAutowireCapableBeanFactory.java:1642)在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579) 调用InitMethods(AbstractAutowireCapableBeanFactory.java:1642)

据我了解,这应该开箱即用。似乎存储库被绑定到与所需实现不同的实现。有任何想法吗?

gradle 构建脚本中的相关片段

提前致谢。

0 投票
1 回答
593 浏览

spring-data - 混合 Spring Data Envers 和 QueryDSL

我在我的项目中使用了一个全局自定义存储库,它扩展了 QueryDslJpaRepository:

和界面:

然后在我的配置中,我用以下方式注释它:

一切正常,但现在我试图通过使用 spring-data-envers 为我的实体添加审计支持,根据文档我应该使用特定的存储库工厂 bean 类:

现在很明显,如果我这样做,这将不起作用,因为我的存储库现在将通过 EnversRevisionRepositoryFactoryBean 类创建,并且不再是 CustomPagingAndSortingRepositoryImpl 类型。

我怎么能支持这样的事情?因为我的自定义存储库需要从 QueryDslJpaRepository 扩展,所以我没有看到如何。

0 投票
1 回答
1649 浏览

spring - Spring Data envers:如何从修订对象中获取值 REVTYPE

我正在尝试使用 spring data envers 来实现对实体的审计。我能够获得实体的所有或单个修订对象作为

Revision我想获得特定版本的 REVTYPE 值,但我在类中找不到任何方法。我可以在 user_aud 表中看到 REVTYPE 的值。

如何获得修订版的 REVTYPE?

谢谢。

0 投票
1 回答
334 浏览

datatables - 我们如何在一个项目中一起使用 spring-data-jpa-datatables spring-data-envers

我在我的数据库配置中启用了这个。它可以在 JPA 方法的帮助下获取审计日志。(spring-data-envers) 在 POM 中用于此

现在我想使用 jquery 数据表的后端处理。为此,我将在我的 POM 中使用 (spring-data-jpa-datatables)。

我如何在一个项目中同时使用它们。

0 投票
1 回答
1966 浏览

spring-boot - EnversRevisionRepositoryFactoryBean 不会为 JPARepositories 创建 bean

我正在使用spring boot,hibernate enverse。我在 pom.xml 中有以下依赖项

以下是我的 envers 配置。

所以包com.example.persistencePersonDAOAddressDAO还有实体。

我有以下两个 DAO,

我有两个实体PersonEntity,我想审计和AddressEntity不想审计。

现在我有以下两项服务,

当我添加@EnableJpaRepositories(...)配置时,它无法获取AddressDAO. 我认为EnversRevisionRepositoryFactoryBean两者都适用RevisionRepositoryJpaRepository

我得到了以下异常堆栈跟踪,

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“addressService”的bean时出错:通过字段“addressDAO”表示不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“addressDAO”的 bean 时出错:init 方法调用失败;嵌套异常是 org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type AddressEntity!

原因:org.springframework.beans.factory.BeanCreationException:创建名为“addressDAO”的bean时出错:调用init方法失败;嵌套异常是 org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type AddressEntity!

引起:org.springframework.data.mapping.PropertyReferenceException:找不到AdressEntity类型的属性findAll!

我是否缺少任何配置。

0 投票
0 回答
246 浏览

spring-boot - spring-data-envers -2.0.0.RELEASE

现在我们正在使用 0.3.0.RELEASE 来获取修订数据,并注意到修订是按升序获取的。现有代码

发现较新的版本 2.0.0.RELEASE 具有基于可分页对象中的排序进行排序的功能。所以想用2.0.0.RELEASE。

以下是修改

但没有工作...在 DatabaseConfiguration 文件中编译错误

在类 'org.xxx.xxx.xxx.config.RevisionRepositoryFactoryBean' 中没有定义 0 个参数的构造函数

有没有人有一个例子如何在spring boot应用程序中使用spring-data-envers -2.0.0.RELEASE。谢谢斯里尼

0 投票
0 回答
423 浏览

spring - 如何临时禁用 AuditEntityListener (Spring Data)?

我们使用带有 AuditEntityListener 的 Spring Data 来更新 change-user 和 changedate。但是对于旧数据的迁移(Spring Batch),我们需要手动设置创建用户和更改用户,但我们不能禁用 AuditEntityListener 的功能。我们还在一些实体中使用了envers,所以我无法自己实现AuditEntityListener。

我必须复制我的实体类吗?

0 投票
0 回答
185 浏览

java - 使 Spring envers Revisions HATEOAS 兼容

我正在使用 Spring Boot、Spring Data REST、Spring Data Envers、Hibernate。我正在使用 Spring Data Envers 加载我的实体的所有修订:

我正在尝试使响应 HATEOAS 与此行兼容:

由于某些原因,我有这个例外:

难道我做错了什么?当然,它只返回修订版,但请求与其他 HATEOAS 请求不同。