问题标签 [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 投票
5 回答
17297 浏览

java - 在 Hibernate Envers 中获取以前版本的实体

我有一个由 Hibernate 加载的实体(通过EntityManager):

此类由 Hibernate Envers 审核。如何加载以前版本的用户实体?

0 投票
3 回答
8728 浏览

java - envers + hibernate 入门(简单和完整的示例)

我有 Hibernate 工作,想尝试添加Envers 审计/修订功能,但似乎无法弄清楚需要什么。(我的示例编译并运行正常,我获得了常规的 Hibernate 功能,但我的数据库中没有出现审计表。)以前有人做过吗?它是否适用于使用 HSQLDB 方言的 H2 数据库?网上有没有简单完整的示例程序?

编辑:让我稍微改一下。最后,我希望我的构建过程创建一个 .jar 文件,我可以将其安装在另一台计算机上,并使用适当的 .properties 文件和 JDBC 驱动程序创建(或允许我创建)适当的数据库表(如果它们不存在)。我怎样才能做到这一点?

编辑:到目前为止,如果我想运行 Jamie B 建议的 ant 任务,我必须调整我的类路径,以便它找到隐藏在 Hibernate 工具 zip 中的 envers jar 文件和hibernate-tools jar 文件。而且我还没有让事情奏效。如果/当我这样做时,我想也许我可以创建一个 SQL 文件并将其作为资源放在我的最终 .jar 文件中,然后我可以在我的程序本身中使用它。(尽管考虑到安全问题,我的脑海中出现了一面红旗……嗯……)

0 投票
6 回答
12388 浏览

java - 使用来自 Hibernate 实体的现有数据填充 envers 修订表

我正在向现有的休眠实体添加环境。就审计而言,一切工作顺利,但是查询是一个不同的问题,因为修订表没有填充现有数据。有没有其他人已经解决了这个问题?也许您已经找到了用现有表填充修订表的方法?只是想我会问,我相信其他人会发现它很有用。

0 投票
2 回答
3187 浏览

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 试图解决这个零碎的问题......

  1. 应该在哪个罐子org.apache.tools.ant.Task里,为什么蚂蚁找不到它?
  2. 关于如何使用 HibernateToolTask​​ 的文档在哪里?(我假设 EnversHibernateToolTask​​ 应该工作相同)

更新(2009-06-18):好的,我终于鼓起勇气尝试在这方面取得一些进展并取得了一些进展。我可以通过做两件事让它几乎工作:

  1. 从命令行ant schemaexport而不是在 Eclipse 中运行来运行我的schemaexport目标。(Eclipse 中的 ant 似乎找不到 org/apache/tools/ant/Task 并且我不知道如何在 eclipse 中设置 Ant 类路径(与 taskdef 项中的类路径不同;不知何故我必须告诉 ant在运行自定义任务时使用类路径来查找自己的该死类。这太疯狂了.... grrr ...)
  2. /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 表。:(

0 投票
4 回答
5418 浏览

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 文件迁移到我的注释?

编辑:呃,我没有意识到你只是这样做:

根据hibernatetool 任务文档。

0 投票
3 回答
2863 浏览

java - 很难让一个简单的 envers 示例工作:问题 #34

我正在尝试让一个简单的envers示例起作用。我有 Java 代码工作(显然),我终于让 org.hibernate.tool.ant.EnversHibernateToolTask​​ 工作,但它只输出“常规”数据的 SQL,而不是版本控制数据。我很困惑下一步该做什么。

我可能会忘记包括什么?

这是它输出的 SQL:{versioning-ddl.sql}

我没有看到任何历史记录表/字段。以下是我的 hibernate.cfg.xml 文件中的相关条目:

和 Java 类的相关部分:

0 投票
0 回答
2042 浏览

hibernate - 无法在 envers 的 REVINFO 中添加自定义日志记录数据

我正在尝试使用 Envers 来实施审计跟踪。它正在创建审计表Person_AUD并输入审计数据。但是,当我尝试添加由 Envers 更新的自定义字段时,什么也没有发生。

0 投票
1 回答
891 浏览

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。

任何帮助,将不胜感激。

0 投票
2 回答
2902 浏览

java - HibernateTemplate 可以与 Envers 一起使用吗?如果是这样,怎么做?

我正在尝试在一个也使用 Hibernate 和 Spring 的项目上使用 Envers - 我非常感谢 HibernateTemplate 提供的代码减少。

我在 JPA 下配置了 Envers,经过一些调整后,我能够获得由 EnversHibernateToolTask​​ Ant 任务(包括审计表)生成的模式。但是,当我编写如下代码时:

数据被持久化,但没有任何东西进入审计表。相反,如果我写:

然后数据进入审计表(但我宁愿使用前一种语法 - 我知道使用 JPA 的 EntityManager 将代码与 Hibernate 分离,但它简单并不能解决麻烦 - 更改 ORM 引擎并不是我最疯狂的梦想项目。)

检查我的applicationContext.xml配置可能会有所帮助:

这是我的persistence.xml设置:

有没有人暗示这里发生了什么?谢谢!

0 投票
1 回答
3046 浏览

java - org.hibernate.envers.event.AuditEventListener.generateBidirectionalCollectionChangeWorkUnits(...) 处的 NullPointerException

我正在使用 Envers 来审核我的实体的不同字段。该框架通常可以工作,但似乎在某些实体映射方面存在问题。所有以前的问题我都可以自己解决……但这一次我被困住了。

将某些实体插入数据库时​​,出现以下异常:

我不能完全确定是哪个实体导致了这种情况,因为它是在 flush() 期间触发的,并且复杂的应用程序在一个更大的事务中插入了许多不同的实体。

我们正在使用一些在该异常之前触发的 HibernateEventListener ......所以我认为该实体是原因。persistence.xml 是这样配置的:

如果这是真的,那么实体如下(摘录):

有谁知道在哪里寻找?一旦我们禁用 Envers,一切正常。但是我们需要envers来生成变化的历史。