问题标签 [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 加载的实体(通过EntityManager
):
此类由 Hibernate Envers 审核。如何加载以前版本的用户实体?
java - envers + hibernate 入门(简单和完整的示例)
我有 Hibernate 工作,想尝试添加Envers 审计/修订功能,但似乎无法弄清楚需要什么。(我的示例编译并运行正常,我获得了常规的 Hibernate 功能,但我的数据库中没有出现审计表。)以前有人做过吗?它是否适用于使用 HSQLDB 方言的 H2 数据库?网上有没有简单完整的示例程序?
编辑:让我稍微改一下。最后,我希望我的构建过程创建一个 .jar 文件,我可以将其安装在另一台计算机上,并使用适当的 .properties 文件和 JDBC 驱动程序创建(或允许我创建)适当的数据库表(如果它们不存在)。我怎样才能做到这一点?
编辑:到目前为止,如果我想运行 Jamie B 建议的 ant 任务,我必须调整我的类路径,以便它找到隐藏在 Hibernate 工具 zip 中的 envers jar 文件和hibernate-tools jar 文件。而且我还没有让事情奏效。如果/当我这样做时,我想也许我可以创建一个 SQL 文件并将其作为资源放在我的最终 .jar 文件中,然后我可以在我的程序本身中使用它。(尽管考虑到安全问题,我的脑海中出现了一面红旗……嗯……)
java - 使用来自 Hibernate 实体的现有数据填充 envers 修订表
我正在向现有的休眠实体添加环境。就审计而言,一切工作顺利,但是查询是一个不同的问题,因为修订表没有填充现有数据。有没有其他人已经解决了这个问题?也许您已经找到了用现有表填充修订表的方法?只是想我会问,我相信其他人会发现它很有用。
java - 尝试运行 org.hibernate.tool.ant.EnversHibernateToolTask 时遇到大量绊脚石
我正在尝试按照相当简洁的 Envers 指南中的建议运行 org.hibernate.tool.ant.EnversHibernateToolTask (表的第二行,文档有指向 PDF 的链接)。这是我调整的 ant 任务,因此它成功找到了 org.hibernate.tool.ant.EnversHibernateToolTask 和 org.hibernate.tool.ant.HibernateToolTask;现在它找不到 org.apache.tools.ant.Task 并且我有一种下沉的感觉我做错了什么。
我以前从未做过自定义 ant 任务,所以我可能遗漏了一些非常简单的东西。有什么建议么?我不知道在 hibernatetool 任务中为类路径放置什么,除了基本的 javadoc之外,我找不到任何文档。
编辑:好的,一些特定的 Q 试图解决这个零碎的问题......
- 应该在哪个罐子
org.apache.tools.ant.Task
里,为什么蚂蚁找不到它? - 关于如何使用 HibernateToolTask 的文档在哪里?(我假设 EnversHibernateToolTask 应该工作相同)
更新(2009-06-18):好的,我终于鼓起勇气尝试在这方面取得一些进展并取得了一些进展。我可以通过做两件事让它几乎工作:
- 从命令行
ant schemaexport
而不是在 Eclipse 中运行来运行我的schemaexport
目标。(Eclipse 中的 ant 似乎找不到 org/apache/tools/ant/Task 并且我不知道如何在 eclipse 中设置 Ant 类路径(与 taskdef 项中的类路径不同;不知何故我必须告诉 ant在运行自定义任务时使用类路径来查找自己的该死类。这太疯狂了.... grrr ...) /lib/ext
通过粘贴在我的 JRE目录中,确保我的类路径包含我认为理所当然的所有 jar :- envers-1.2.0.ga-hibernate-3.3.jar
- hibernate3.jar
- 休眠工具.jar
- slf4j-log4j12-1.5.6.jar
- slf4j-api-1.5.6.jar
- log4j-1.2.15.jar
现在我遇到了一个新问题:
构建失败 C:\deka\proj\java\test-database\build.xml:61:为 JPA 创建配置时出现问题。您还记得将休眠的 EntityManager jar 添加到类路径吗?
[[[[[尖叫]]]]]
更新看来我也需要
- 休眠实体管理器.jar
- hibernate-annotations.jar
我仍然得到类加载器错误:
我怎样才能在不使用 J2EE 服务器的情况下运行它?!?!?!?!?!?我还需要哪些其他 JAR 文件?我真的很困惑和沮丧。
更新(2009-06-23):我终于成功构建了。好像你需要:
并确保使用
而不是<jpaconfiguration>
示例 ant 任务中包含的项目。它仍然无法正常工作,但我没有包含 envers 表。:(
java - JPA 配置到底是什么?
我要疯了,试图让一个简单的Envers示例工作。我被困在了org.hibernate.tool.ant.EnversHibernateToolTask
——看起来我终于得到了我需要的所有 jar 文件,但现在我收到了错误消息
据我所知,持久性单元与 JPApersistence.xml
文件相关联。但我没有使用persistence.xml 文件;我正在使用 hibernate.cfg.xml - 但 envers 示例<jpaconfiguration>
在 ant 任务中有一个:
有什么可以替换它以使其与 hibernate.cfg.xml 文件一起使用吗?似乎有关于如何让所有这些东西正常工作的零文档。
编辑:好的,所以主要问题是我不了解 hibernatetool 选项以及什么适合我的应用程序。幸运的是,我确实找到了Hibernate ant 文档。谢谢。现在我有一个新问题:我正在使用注释,但我还为属性设置设置了一个 hibernate.cfg.xml。该hibernatetool
任务只能让我运行其中一个<configuration />
或<annotationconfiguration />
两个都不运行,甚至<configuration />
无法工作,因为我已经有注释在做事。如何将我的属性设置从 hibernate.cfg.xml 文件迁移到我的注释?
编辑:呃,我没有意识到你只是这样做:
java - 很难让一个简单的 envers 示例工作:问题 #34
我正在尝试让一个简单的envers示例起作用。我有 Java 代码工作(显然),我终于让 org.hibernate.tool.ant.EnversHibernateToolTask 工作,但它只输出“常规”数据的 SQL,而不是版本控制数据。我很困惑下一步该做什么。
我可能会忘记包括什么?
这是它输出的 SQL:{versioning-ddl.sql}
我没有看到任何历史记录表/字段。以下是我的 hibernate.cfg.xml 文件中的相关条目:
和 Java 类的相关部分:
hibernate - 无法在 envers 的 REVINFO 中添加自定义日志记录数据
我正在尝试使用 Envers 来实施审计跟踪。它正在创建审计表Person_AUD
并输入审计数据。但是,当我尝试添加由 Envers 更新的自定义字段时,什么也没有发生。
hibernate-envers - 存在注释时创建 Envers 的 EntityManagerFactory 时出错
恩弗斯看起来很轻松。只需在您的persistence.xml
(eventlisteners) 中添加一些休眠属性,并注释您要审核的实体。
我正在使用 Hibernate 的应用程序上对此进行测试。这是一些pom信息:
- org.hibernate.hibernate-entitymanager:3.4.0.GA
- org.hibernate.hibernate-annotations:3.4.0.GA
- org.hibernate.hibernate:3.2.6.GA
- org.jboss.envers.jboss-envers:1.2.1.GA-hibernate-3.3
如果我没有插入注释,我的应用程序上下文就可以正常加载。但是如果我插入一个,我将无法构建 EntityManagerFactory。
任何帮助,将不胜感激。
java - HibernateTemplate 可以与 Envers 一起使用吗?如果是这样,怎么做?
我正在尝试在一个也使用 Hibernate 和 Spring 的项目上使用 Envers - 我非常感谢 HibernateTemplate 提供的代码减少。
我在 JPA 下配置了 Envers,经过一些调整后,我能够获得由 EnversHibernateToolTask Ant 任务(包括审计表)生成的模式。但是,当我编写如下代码时:
数据被持久化,但没有任何东西进入审计表。相反,如果我写:
然后数据进入审计表(但我宁愿使用前一种语法 - 我知道使用 JPA 的 EntityManager 将代码与 Hibernate 分离,但它简单并不能解决麻烦 - 更改 ORM 引擎并不是我最疯狂的梦想项目。)
检查我的applicationContext.xml
配置可能会有所帮助:
这是我的persistence.xml
设置:
有没有人暗示这里发生了什么?谢谢!
java - org.hibernate.envers.event.AuditEventListener.generateBidirectionalCollectionChangeWorkUnits(...) 处的 NullPointerException
我正在使用 Envers 来审核我的实体的不同字段。该框架通常可以工作,但似乎在某些实体映射方面存在问题。所有以前的问题我都可以自己解决……但这一次我被困住了。
将某些实体插入数据库时,出现以下异常:
我不能完全确定是哪个实体导致了这种情况,因为它是在 flush() 期间触发的,并且复杂的应用程序在一个更大的事务中插入了许多不同的实体。
我们正在使用一些在该异常之前触发的 HibernateEventListener ......所以我认为该实体是原因。persistence.xml 是这样配置的:
如果这是真的,那么实体如下(摘录):
有谁知道在哪里寻找?一旦我们禁用 Envers,一切正常。但是我们需要envers来生成变化的历史。