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

hibernate-envers - Hibernate Envers Audit Query - 仅检索所有实体的最新修订

我想检索最近更改的所有实体(即数据库中的所有内容)的所有最新版本。
以下查询获取特定实体“MyEntity”的修订

queryObject = auditReader.createQuery().forRevisionsOfEntity(MyEntity.class, false, true).addOrder(AuditEntity.revisionNumber().desc())

但我需要一种机制来获取所有实体的记录,而不考虑特定的实体类型。

0 投票
1 回答
138 浏览

spring - 如何捕捉 Envers 中的错误?

我已将表的自动更新设置为无

这样,当我运行 Envers 时,我将不得不自己创建审计表。但是,当我使用 @Audited 注释设置要审计的实体并且我没有为该实体创建审计表时,我遇到了错误,因为 Envers 然后尝试填充不存在的审计表。此错误至关重要,因为它会因审计中断而中断更新/插入/删除实体的过程。

有没有办法对 Envers 进行某种尝试/捕获,这样如果出现这种错误,它不会破坏主进程?

附言

我还使用测试数据库自动创建审计表,但它在设定的时间或调用时运行。如果我忘记调用脚本或表的测试数据库更新失败,我仍然希望通过某种方式检查错误并绕过审计。

0 投票
1 回答
1541 浏览

spring-data-jpa - 如何使用 Spring Data JPA 审计和 Envers 跟踪删除事件?

在我的审计实体中,我有以下字段:

但是当实体被删除时它们不会改变。据我了解,我需要在那里进行自定义org.springframework.data.jpa.domain.support.AuditingEntityListener和添加@PreRemove,但我不明白如何实现这一点,因为我总是有

是否有任何其他选项可以跟踪删除事件并将更新的字段存储到 Envers 审计表?

0 投票
2 回答
496 浏览

java - 将带有 java envers 的审计表移动到新的数据库实例

我有一个 Mysql 数据库,模式名称为“myschema”。这个模式有表,其中一些表是审计表。这是我对我的 java 项目的依赖。

现在我想在我的当前数据库上删除这个审计表,并将它们更多地放在一个单独的实例上,并带有一个新的分支。

如何才能做到这一点?任何建议,提前谢谢你

0 投票
1 回答
353 浏览

hibernate-envers - Spring Data Envers 实体不能为空

假设我们已经审计了具有@OneToOne 关系的实体:

和 RevisionService 具有获取修订和查找更改的方法:

现在,如果我创建新的 Product 和 ProductPrice 记录,然后对 Product 进行 5 次以上的更改(将生成 5 个 RevInfo 记录),我会得到异常:

调试后,我看到这个“null”实体被 Hibernate 代理,而 Spring Data envers 在这一点上无法解析修订号: Number revNo = this.enversService.getRevisionInfoNumberReader().getRevisionNumber(revision);

当时的 PersistentContext

这是github测试项目的链接:https ://github.com/aquariusmaster/spring-data-envers-bug

所以我的问题是这是 Spring Data Envers 中的一个错误,还是我错过了配置中的某些内容?

0 投票
0 回答
596 浏览

spring-data-jpa - Spring Data Envers + Liquibase:如何创建审计表并自动更新它们?

我想在我的 Spring Boot 应用程序中审核我的模型。我使用 Liquibase 进行数据库迁移。假设我有这个实体:

user使用 Liquibase 创建表

如何创建user_AUD用于审计的表?我想避免手动创建它,因为如果以后我将其他字段添加到User实体中,我确信我会忘记将它们添加到user_AUD,并且手动执行它太乏味了。同样的问题是针对REVINFO表的(如何自动创建它?)

请注意,hibernate.ddl-auto自从我使用 Liquibase 以来,我禁用了属性。

非常感谢你的帮助。

0 投票
1 回答
305 浏览

java - Hibernate envers:如何获取当前审计的表名?

使用 Hibernate Envers,是否可以获得当前已审计的表?我从文档中获取了示例,但我添加了一个额外的列tableName

和听众:

我发现这篇旧帖子Get audit table name from hibernate envers? 但没有相关的答案。非常感谢

0 投票
1 回答
702 浏览

java - Hibernate Envers 如何正确获取日志历史记录?

我使用 Hibernate Envers 创建了一个表审计日志,并且我使用 Spring Data Envers 作为我的库,当我保存/更新/删除它时,它成功地将日志保存在我的 autid_log 表中,但是当我想检索日志数据时,我得到了无限错误循环,我该如何正确执行此操作?这是我的代码:

这是我的控制器:

这是我的 Partner.java 模型:包 com.example.envers.auditing.Model;

这是我的 PartnerShipment.java :

这是我的服务:

这是我的存储库:

这是我的 Application.java

当我得到 id = 1 的数据时,我得到了类似循环的无限错误,从 java.lang.StackOverflowError: null 开始,我在终端中看到的只有这个:

为了避免这个错误,我错过了什么?

0 投票
1 回答
423 浏览

spring-boot - 为什么 Spring Data Envers Revision Type 返回 UNKOWN?

我试图实现的是在响应中打印出 UNKNOWN 的修订类型,但在数据库中存在 revtype。这是回应:

起初我使用 Spring Data Envers 进行开发,我打印出 INSERT/UPDATE/DELETE 的修订类型,当修订类型变为 UNKNOWN 时我不依赖。这是我的模型:RoleHd.java

RoleDt.java:

这是我保存数据 RoleHdService.java 的方式:

这是我从 envers 获取修订数据的方法:

这是我的 application.java

在修订类型打印未知之前我做错了什么?

0 投票
1 回答
694 浏览

hibernate-envers - 自定义审计日志与 Hibernate Envers

我需要为我构建的 Web 应用程序实现审计日志记录。我正在使用Spring BootMySQL并且JPA (Hibernate)正在开发中。我知道有一些解决方案,比如Hibernate Envers在实体级别进行审计。问题在于,将检查这些日志的用户(构建的 Web 应用程序的管理员用户)没有实体的概念,他说的是用户操作。我的客户要求的是能够检测每个用户执行的每个操作。例如,他想列出过去 2 天内执行的所有操作。他希望看到如下表格:

DETAILS列将包含与操作相关的信息,例如操作的输入和输出。此列对于每个操作都会有所不同,它可能包含文本JSONXML或任何其他格式,没关系。我看到这里出现了几个问题。第一个是它需要在开发人员方面做很多工作,我。我可以Spring AOP@Controlleror@Service类中应用来构建DETAILS和其他列并保存信息,但仍然不确定这是否是一个好的解决方案。我也在考虑使用 Envers 并将Envers审计表转换为用户希望看到的上表。我不确定这是否可能。另一种选择是按Envers原样使用并教育用户有关实体的知识。我会很感激一些指导。