问题标签 [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 回答
143 浏览

hibernate - 实体历史持久性的 JPA 继承

我们需要将实体的历史记录保存到单独的表中。我查看了 Envers,但 REVINFO 表对于改造现有客户和性能来说是个问题。

我正在考虑一种方法,我们将每个或我们的“具体”实体(例如 CUSTOMER)用 @MappedSuperclass 注释 ....data 将保存到 CUSTOMER 表中。我们将实体子类 Customer 类称为“CustomerHistory”,并将我们需要的字段(historyId(主键)、开始时间、结束时间)添加到 CUSTOMER_ADDRESS 表中。

这行得通吗?使用 JPA 处理 2 个表中的主键?

谢谢。

0 投票
0 回答
165 浏览

spring-boot - 如何避免在 Spring 启动时使用 envers 的缓慢请求

我在 Spring Boot 项目中使用 envers。

如果表上有很多数据data_aud(数据数:3500),请求findRevisions(key, pageable)很慢。

当然,如果没有大量数据,请求是银色的。

Spring调用这个函数时,会出现一些hiberate sql。

也许我认为select max顺序是请求缓慢的原因。

如何避免这种缓慢的情况?

+)

data_aud 表的主键是 (data_id, varchar(32), rev, int(11))

数据表的PK是data_id。

0 投票
1 回答
1405 浏览

java - Spring Data Envers - PropertyReferenceException:没有找到类型 Foo 的属性 findRevisions

我确实有一个 Sprint-Boot 应用程序,并尝试添加hibernate-envers或更具体spring-data-envers的项目。

所以我加了

Revision 实体已成功生成/创建并保存,直到我尝试使用 RevisionRepository。现在我得到了我没想到的错误。

我创建了一个新配置,例如:

我通过以下方式扩展了我已经工作的 CrudRepository:

每当我尝试启动应用程序时,它都会告诉我:

配置包括:

所以我在某个地方发现了一个@EnableJpaRepositories(basePackages = "com.package.repos"不需要两次的提示,因为我已经得到了 JpaRepositories 的另一个配置,所以我从EnversConfiguration

之后我收到此错误:

由于 FooService 中的 FooRepository 的一些 @Autowired 注入:

只是为了确保我将以下依赖项添加到 pom.xml 并检查包装是否设置为“war”

更新一(原标题:ClassNotFoundException: EnversRevisionRepositoryFactoryBean or org/joda/time/DateTime)

所以我玩了一下,改变了导入配置的顺序:

之后我将 FooRepository 拆分为 FooRevisionRepository 和 FooRepository 只保留一个 CrudRepository:

不,我在启动时收到此错误

0 投票
1 回答
1823 浏览

spring-boot - 使用Spring data jpa审计登录实体表以外的表

在 Hibernate Envers 中,可以有一个单独的审计表。同样,是否可以使用 Spring Data JPA 审计登录到实体表以外的表?

0 投票
1 回答
1045 浏览

hibernate - 如何填写审计可扩展实体映射超类中的审计字段?

我正在使用休眠环境来审计我的实体。我有这样的OfficeEntity:

和这样的可审计实体:

似乎这种结构的审计字段没有填写 office_aud 表。所以有人知道我如何填写 office_aud 表中的审计字段吗?

0 投票
1 回答
892 浏览

spring-boot - Envers 审计表不会在使用 @Transactional 注释的 spring-boot 集成测试中回滚

我试图弄清楚为什么@Transactional 在每次测试后不会回滚 envers 审计表中的数据以及如何修复它。我怎样才能在春季集成测试中做到这一点?

我已经尝试过使用@DirtiesContext,这使它可以工作,但它是一种解决方法,并且使测试运行的时间更长,这是我不喜欢的。

你们中有人知道如何使它工作吗?

0 投票
0 回答
359 浏览

jpa - 休眠环境与自我实体

我有一个要求,我们是一个拥有自我实体的实体,并希望对其进行审计。看看下面:

如您所见,我们将客户端对象作为客户端对象中的父对象。我们还有 parentId 字段,如果一个人有父级,则它具有父级的 id。

在这里,我将关系标记为NOT_AUDITED,因此希望从主表而不是历史表中获取父级。但我注意到它也在查询父级的历史表。

另外,这是引用 self 对象的正确方法吗?有没有更好的方式来表示它?

我正在使用 envers 版本 5.3.7.Final。

显示正在从历史表而不是主表检索数据的日志:

0 投票
1 回答
145 浏览

spring-data-jpa - 如何将实体关系中的特定 Envers 修订定位到@Audited 实体?

我需要维护实体 A 与@Audited实体 B 的某些修订的关系,以便该关系并不总是指向最新版本(这是默认行为)。

是否有框架功能(或推荐的解决方案)用于声明性方法以将修订包含在关系中?

这是否应该通过对关系的双方进行版本控制来实现?(但这只会将目标修订问题转移到链中的下一个实体)

这是与 Envers 审计不同的模式吗?

或者这是一个完整的定制?

0 投票
1 回答
68 浏览

mysql - Envers + MYSQL + 列表= SQLSyntaxErrorException: 指定的键太长;

我正在使用 Envers 扩展具有审计支持的现有应用程序。我注释了所有@Entity 类,我得到了一堆异常跟踪。查看它们时,似乎它们都与具有以下形式的属性定义有关

所有的异常都是List<String>属性,getter 方法有一个@ElementCollection 注解。

我得到的异常总是(这里是上述 testActivities 属性的异常)

我猜问题是包含 testActivities 的主键?!

testActivities 属性是指用户必须执行的指令列表,因此减少代码端的字符串长度,正如一些与密钥长度问题相关的 StackOverflow 页面所建议的那样,可能不是一个选项?!

目前所有表都是DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci用 utf8 而不是 utf8mb4 创建的,我可能可以节省内存,但这是一个好的可靠的解决方案吗?

如何以正确的方式解决这个问题?我对以上两点持不同看法。

我运行 MySQL Server 8.0.15、MyISAM,
我使用的是 Spring Boot,它为我提供了 Hibernate Envers 5.3.10

0 投票
2 回答
536 浏览

spring-boot - 创建测试数据时出现 NullPointerException

我是 Envers 的新手——从今天开始。我正在使用 Envers 扩展具有审计支持的现有 Spring Boot 应用程序。我注释了所有 @Entity 类并进行了一些更改,如此处所述Envers + MYSQL + List<String> = SQLSyntaxErrorException: Specified key was too long; 所有数据库表都是完美创建的,但是当我使用 CommandLineRunner 在数据库中生成测试数据时,出现以下错误。

在我添加 Envers 之前,在我缩短字符串之前,如上面的另一个 stackoverflow 条目中所述,我可以完美地生成测试数据。

问题是我在整个堆栈跟踪中没有看到任何有用的信息来自哪里。如何找出根本原因?