问题标签 [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.
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。
有什么线索吗?
例外是这个:
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 中显示创建表:
hibernate - Hibernate Envers 和“Javassist 增强失败”异常
我们正在使用 Hibernate Envers 并且有以下情况:
一个类BusinessObjectType
和一个类Identity
引用BusinessObjectType
:
然后,我们使用以下命令查询所有版本的 Identity:
如果存储的身份没有BusinessObjectType
(即businessObjectType
是和是空的)一切都像一个魅力。
如果身份有,businessObjectType != null
我们会得到“Javassist Enhancement failed”异常:
该错误似乎与尝试实例化 BusinessObjectType 的 Envers 有关,但我并没有真正看到问题所在(如果我们不使用 AuditQuery,Hibernate 对这两个对象都没有问题)。
异常的原因是
没有堆栈跟踪。
关于问题可能是什么的任何提示?
jboss - jboss 7(envers 4)无法加载类 org.hibernate.envers.event.AuditEventListener
我从休眠 Envers 3.6 移植到 Envers 4.0。这个新版本没有AuditEventListener。旧版本要求:监听器
我找不到如何配置新版本。
java - Envers 自定义修订监听器
我在 Tomcat 环境中使用 Hibernate Envers。它工作正常。但是,我确实需要能够添加更改要审核的数据的用户的用户名。这可以通过实现您自己的 RevisionEntity 版本来完成。然后,您还必须实现一个自定义RevisionListener
来填充您要审核的额外信息。我需要审核更改了要审核的数据的用户名。在文档中,它是一个关于如何使用 Seam 执行此操作的示例。在RevisionListener
他们的电话中:
获取用户名。在我的项目中,我们将项目拆分为数据库和 Web 的单独模块。我需要在我的数据库模块中实现我的 custum 修订监听器,以便能够获取当前登录的用户名。我无法将其移动RevisionListener
到 web 包并从数据库模块引入对 web 模块的依赖。如何在我的自定义 RevisionListener 中以处理多个用户同时登录的方式获取当前用户名?
最好的解决方案是适用于大多数容器的解决方案。
java - 检查变量时 Eclipse 会做什么(调试时)
我有一个导致一些悲伤的实例:org.hibernate.envers.entities.mapper.relation.lazy.proxy.ListProxy
每当我以编程方式尝试访问它时,我都会得到一个空指针异常(即调用list.size()
动态的。然后一切正常。我怎样才能以编程方式做同样的事情?我试过list.toString()
了,但这似乎没有帮助。
更新 1
不知道这是否有帮助,但是当我第一次单击显示中看到的列表实例时:
然后数据库查询运行,当我再次单击时,我得到正确的.toString()
结果。
更新 2
这是我得到的原始异常(当我不在调试模式下检查元素时)。
最终解决方案(实际上更多的是临时破解)
java - Envers 查询返回一个惰性结果而不是一个急切的结果
我有一个 Envers 查询,它返回一个惰性结果,尽管该字段是在休眠映射中使用惰性 =“假”定义的。
我在 Hibernate-Envers 论坛上查了一下,没有找到任何有用的信息。
所以这就是我所拥有的:
休眠映射 -
这是运行时的结果
关于我做错了什么或如何获得真实对象而不是懒惰对象的任何想法?
提前致谢。
java - Envers 与 Hibernate 拦截器,onDelete
我正在尝试实现一个简单的基于 Envers + 拦截器的方法来审核我的 Hibernate 实体。为此,按照典型方法,BaseEntity
所有审计属性都有一个:
在 中AuditInterceptor
,我已经重写onFlushDirty
和onSave
操作上述属性的方法,具体取决于它是实体保存还是更新。一切都按预期进行保存和更新。
我面临的问题是:我需要一种方法来操作删除操作的上述属性。覆盖onDelete
确实为我提供了state[]
数组的句柄,但修改它不会反映在 _AUD(审计)表中。简而言之:我也希望能够在审计表中审计删除操作。
有没有解决方法,或者我错过了什么?
java - 获取集合中根实体及其实体的修订号
目前,我正在我们的应用程序中尝试使用 envers 库进行集成。每当我执行 getRevisions 时,我只会获得根实体的修订。
但是,我希望 Envers 也能够获得所附集合中实体的修订。我尝试了一些自定义查询,但无法通过连接或其他方式将两者结合在一起。
实体如下:
实体:表格
实体:FormElement
服务:FormVersioningService
第一个日志返回:
信息:[16、19、20、24]
第二个返回:
信息:[24, 25]
但我想得到以下结果:
信息:[16、19、20、24、25]
我正在使用 Hibernate 3.5.6,目前无法升级到新版本,因此我正在寻找此版本中的解决方案。
欢迎任何帮助,我们将不胜感激
java - Hibernate Envers find 方法期间的 nullpointerexception
我已经很久没有使用 envers 了,我遇到了一个问题,我似乎无法在任何地方找到答案。我试过谷歌搜索堆栈跟踪但无济于事,所以我一定错过了一些非常明显的东西。每当我尝试在 org.hibernate.envers.AuditReader 中运行“find(class, versionNumber)”方法以检索数据库中文档类的先前版本时,我似乎都会得到以下堆栈跟踪:
导致此错误的代码如下。它发生在我的文档被保存之后,并且似乎正在数据库中创建适当的版本(document_AUD)。
我的“文档”类是这样注释的......
请让我知道您需要更多代码才能正确找到此问题。
非常感谢您的阅读,欢迎提出任何建议,
富有的。