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

java - Hibernate ENVERS 类加载问题

我正在尝试将 Hibernate Envers 集成到已经开发的应用程序中。

我将 Hibernate Envers JAR 放在一个 EAR 包中,它引发了一个关于类加载器和某种冲突的丑陋异常。

如果我避免在 EAR 中发送 Envers JAR 并将其放在 JBoss 的“lib”目录中,那么一切正常,但我需要将库与应用程序一起发送,因为我无法访问这个全局“lib” “ 目录。

我在 JBoss 5.1.0.GA 上部署,使用 Hibernate 3.3.GA 和 Envers 1.2.2.GA。

有什么线索吗?

例外是这个:

0 投票
1 回答
1976 浏览

java - Envers 审计表中缺少属性

我正在使用 envers 来审核我的 ParameterToValue 实体。它的属性“containerId”、“containerType”、“parameterId”在映射的数据库表“values_for_params”(一个常规的 Hibernate 表)中作为列出现,在 envers 生成的“values_for_params_AUD”数据库表中缺失。我需要能够获取给定(containerId、containerType、parameterId)的历史“值”。

ParameterToValue 类:

Hibernate 映射定义:

values_for_params在 MySQL 中显示创建表:

values_for_params_AUD在 MySQL 中显示创建表:

0 投票
2 回答
15751 浏览

hibernate - Hibernate Envers 和“Javassist 增强失败”异常

我们正在使用 Hibernate Envers 并且有以下情况:

一个类BusinessObjectType和一个类Identity引用BusinessObjectType

然后,我们使用以下命令查询所有版本的 Identity:

如果存储的身份没有BusinessObjectType(即businessObjectType是和是空的)一切都像一个魅力。

如果身份有,businessObjectType != null我们会得到“Javassist Enhancement failed”异常:

该错误似乎与尝试实例化 BusinessObjectType 的 Envers 有关,但我并没有真正看到问题所在(如果我们不使用 AuditQuery,Hibernate 对这两个对象都没有问题)。

异常的原因是

没有堆栈跟踪。

关于问题可能是什么的任何提示?

0 投票
1 回答
8663 浏览

jboss - jboss 7(envers 4)无法加载类 org.hibernate.envers.event.AuditEventListener

我从休眠 Envers 3.6 移植到 Envers 4.0。这个新版本没有AuditEventListener。旧版本要求:监听器

我找不到如何配置新版本。

0 投票
2 回答
2688 浏览

java - Envers 自定义修订监听器

我在 Tomcat 环境中使用 Hibernate Envers。它工作正常。但是,我确实需要能够添加更改要审核的数据的用户的用户名。这可以通过实现您自己的 RevisionEntity 版本来完成。然后,您还必须实现一个自定义RevisionListener来填充您要审核的额外信息。我需要审核更改了要审核的数据的用户名。在文档中,它是一个关于如何使用 Seam 执行此操作的示例。在RevisionListener他们的电话中:

获取用户名。在我的项目中,我们将项目拆分为数据库和 Web 的单独模块。我需要在我的数据库模块中实现我的 custum 修订监听器,以便能够获取当前登录的用户名。我无法将其移动RevisionListener到 web 包并从数据库模块引入对 web 模块的依赖。如何在我的自定义 RevisionListener 中以处理多个用户同时登录的方式获取当前用户名?

最好的解决方案是适用于大多数容器的解决方案。

0 投票
1 回答
4673 浏览

java - 检查变量时 Eclipse 会做什么(调试时)

我有一个导致一些悲伤的实例:org.hibernate.envers.entities.mapper.relation.lazy.proxy.ListProxy每当我以编程方式尝试访问它时,我都会得到一个空指针异常(即调用list.size()动态的。然后一切正常。我怎样才能以编程方式做同样的事情?我试过list.toString()了,但这似乎没有帮助。

更新 1

不知道这是否有帮助,但是当我第一次单击显示中看到的列表实例时:

然后数据库查询运行,当我再次单击时,我得到正确的.toString()结果。

更新 2

这是我得到的原始异常(当我不在调试模式下检查元素时)。

最终解决方案(实际上更多的是临时破解)

0 投票
1 回答
2358 浏览

java - Envers 查询返回一个惰性结果而不是一个急切的结果

我有一个 Envers 查询,它返回一个惰性结果,尽管该字段是在休眠映射中使用惰性 =“假”定义的。

我在 Hibernate-Envers 论坛上查了一下,没有找到任何有用的信息。

所以这就是我所拥有的:

休眠映射 - 休眠映射

这是运行时的结果

这是运行时的结果

关于我做错了什么或如何获得真实对象而不是懒惰对象的任何想法?

提前致谢。

0 投票
1 回答
1807 浏览

java - Envers 与 Hibernate 拦截器,onDelete

我正在尝试实现一个简单的基于 Envers + 拦截器的方法来审核我的 Hibernate 实体。为此,按照典型方法,BaseEntity所有审计属性都有一个:

在 中AuditInterceptor,我已经重写onFlushDirtyonSave操作上述属性的方法,具体取决于它是实体保存还是更新。一切都按预期进行保存和更新。

我面临的问题是:我需要一种方法来操作删除操作的上述属性。覆盖onDelete确实为我提供了state[]数组的句柄,但修改它不会反映在 _AUD(审计)表中。简而言之:我也希望能够在审计表中审计删除操作。

有没有解决方法,或者我错过了什么?

0 投票
0 回答
1406 浏览

java - 获取集合中根实体及其实体的修订号

目前,我正在我们的应用程序中尝试使用 envers 库进行集成。每当我执行 getRevisions 时,我只会获得根实体的修订。

但是,我希望 Envers 也能够获得所附集合中实体的修订。我尝试了一些自定义查询,但无法通过连接或其他方式将两者结合在一起。

实体如下:

实体:表格

实体:FormElement

服务:FormVersioningService

第一个日志返回:

信息:[16、19、20、24]

第二个返回:

信息:[24, 25]

但我想得到以下结果:

信息:[16、19、20、24、25]

我正在使用 Hibernate 3.5.6,目前无法升级到新版本,因此我正在寻找此版本中的解决方案。

欢迎任何帮助,我们将不胜感激

0 投票
1 回答
2032 浏览

java - Hibernate Envers find 方法期间的 nullpointerexception

我已经很久没有使用 envers 了,我遇到了一个问题,我似乎无法在任何地方找到答案。我试过谷歌搜索堆栈跟踪但无济于事,所以我一定错过了一些非常明显的东西。每当我尝试在 org.hibernate.envers.AuditReader 中运行“find(class, versionNumber)”方法以检索数据库中文档类的先前版本时,我似乎都会得到以下堆栈跟踪:

导致此错误的代码如下。它发生在我的文档被保存之后,并且似乎正在数据库中创建适当的版本(document_AUD)。

我的“文档”类是这样注释的......

请让我知道您需要更多代码才能正确找到此问题。

非常感谢您的阅读,欢迎提出任何建议,

富有的。