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

entity - 创建 Envers 自定义修订实体

我正在尝试为我们的项目设置审核。我从工作正常的默认配置开始。

下一步是存储已进行更改的用户。按照手册,我创建了自定义实体修订:

}

还有自定义监听器:

这是日志中的一些行:

DEBUG:org.hibernate.envers.configuration.metadata.AuditMetadataGenerator - 为实体 com.csbi.samples.domain.Property 生成第一次审核映射。
调试:org.hibernate.envers.configuration.metadata.AuditMetadataGenerator - 为实体 com.csbi.samples.domain.Property 生成第二遍审计映射。
信息:org.hibernate.cfg.HbmBinder - 映射类:com.csbi.samples.domain.Property_AUD -> PROPERTIES_AUD
信息:org.hibernate.cfg.HbmBinder - 映射类:org.hibernate.envers.DefaultRevisionEntity -> REVINFO

看看输出的最后一行。仍然DefaultRevisionEntity映射而不是CustomRevisionEntity.

我不知道出了什么问题。有什么建议么?

0 投票
5 回答
5950 浏览

hibernate - 使用 Hibernate Envers 进行集成测试

我正在尝试围绕一些经过审计的实体进行一些测试。我的问题是 envers 只审计事务提交。

我需要创建/编辑一些测试对象,提交事务,然后检查修订。

使用 envers 进行集成测试的最佳方法是什么?

更新:这是我想要实现的一个非常糟糕的、非确定性的测试类。我宁愿这样做而不依赖于测试方法的顺序

首先在单个事务中创建一个帐户和 account_transaction。两个经审计的条目均适用于修订版 1。

其次在新交易中更新了 account_transaction。经审核的条目为修订版 2。

第三,在修订版 1 中加载经审计的帐户并对其进行处理。

0 投票
1 回答
3537 浏览

spring - hibernate-envers RevisionListener spring 集成为 spring bean

我需要在 hibernate-envers 的修订监听器中做一些数据库处理。为此,我需要 Spring Framework 的注入功能。如何实施?这是表示需要的代码,但 CustomRevisionListener 由 Envers 代码中的构造函数实例化。Spring 仅SecurityContextHolder作为静态服务定位器。如何注入其他bean?

0 投票
1 回答
315 浏览

netbeans - NetBean 构建文件中的 EnversHibernateToolTask​​ 问题

我正在尝试为 Envers 合并休眠模式生成器。我添加了这个目标:

问题是我 使用类加载器 AntClassLoader[myproject\lib\hibernate-persistence*.jar] 得到错误 taskdef class org.hibernate.tool.ant.EnversHibernateToolTask

帮助会很大。

谢谢你,伊多。

0 投票
1 回答
1455 浏览

java - Java monitor changes in database - Hibernate and envers

I'm writing a server side application that will monitor changes to a database, I plan to do this with Hibernate. I'd like to set up a listener so that if any changes are made to the data any registered observers can be told there is an update and send a separate request to pull it.

I've read about Hibernate envers as well as the AuditEventListener. My question is though seeing as my application will only get data and not set it, can the Envers listeners listen to changes in tables that are NOT made by my application?

0 投票
1 回答
1346 浏览

jpa - Envers 多级实体修订指南

用户有 n 个联系人。一个联系人可以有一个本地化的评论(评论在联系人之间共享)。Java Bean:

如果我更改联系人 (Contact.comment) 的德语本地化 (Comment.de),那么这将创建一个新修订版,但不会针对用户。如果我向 envers 询问用户修订,我将永远不会看到这个“2 级更改”,因为用户和联系人之间的关系没有改变,只有联系人评论中的德语字符串发生了变化。

但我想在用户历史记录中看到一个新条目(更改了联系人 XYZ 的德语评论)。

我怎样才能做到这一点?:D

谢谢

0 投票
2 回答
3453 浏览

jakarta-ee - 难以使用 Envers 审计多对多关系

我想使用 Envers 来审核与嵌入式组件的多对多关系,但我遇到了 MappingException 表示不支持 ComponentType 的问题。这是堆栈跟踪的相关部分:

阅读 Envers 参考资料,Envers 似乎可以处理我正在尝试做的事情。根据参考:

如果您想覆盖从@Mappedsuperclass 或嵌入式组件中继承的某些字段/属性的审计行为,您可以在组件的子类型或使用站点上应用@AuditOverride(s) 注释。

这是我的关联实体。您可以看到我在哪里尝试在类级别使用 @AuditOverride 来防止审核嵌入式组件。我还尝试在字段本身上使用注释。两者都没有改变。

这是用户实体:

这是角色实体:

这是嵌入式组件:

最后,为了完整起见,这是我的基本实体:

我已经阅读了 Envers 参考并仔细阅读了论坛,但信息似乎很稀少。对此有任何想法或指示吗?

0 投票
2 回答
4493 浏览

java - Envers、PostgreSQL 和 TINYINT

我们将 Envers 与 Oracle 和 MySQL 一起使用,没有任何问题。我们现在正在尝试 PostgreSQL,但我们遇到的问题是审计表是使用REVTYPEtype 列创建的TINYINT

TINYINTPostgreSQL 不支持。

有没有办法改变类型REVTYPE

例子:

编辑

问题已解决:我忘记了更改 Hibernate 方言。

0 投票
1 回答
3345 浏览

java - Hibernate Envers 修订信息(更改列表)

我想在我的项目中添加修订更改列表(单击信息图标),例如:

哪个是最好的方法?

ps:我已经使用了EntityTrackingRevisionListener。

谢谢。

0 投票
2 回答
3333 浏览

hibernate - 在 Hibernate 中使用 CascadeType.ALL 时保存顶级实体会导致对相关实体的不必要更新

有一个带有@OneToMany 映射到另一个实体(CoverArt)的实体类(Song),并将级联设置为ALL,因为只需保存主要实体并让它负责保存封面艺术似乎更容易

但是我稍后在代码中发现,如果我刚刚从数据库中检索类的实例,然后在会话中只修改了 Song 实体中的一个字段,这将导致它更新所有链接到该歌曲的封面艺术实体尽管封面艺术没有任何变化,但为什么要这样做?

此外,我认为这不会导致问题,但我正在使用 Envers,并且(看似)对 CoverArt 表不必要的额外更新具有导致 Envers 创建不必要的审计表的敲击效应。

如果我删除修改一个字段的 CascadeType 注释不会导致更新封面艺术实体并且一切正常,只要我添加额外的逻辑来添加封面艺术,但我希望我不需要做这个。