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

hibernate - 为教义休眠 Envers?

Doctrine 1.x 和 2 都以单独的审计表的形式提供了某种版本的支持,该审计表跟踪随时间的变化。然而,这些版本似乎是为每行使用(即它们都维护自己的版本号)而不是在数据库范围内使用的,例如在 Hibernate Envers 中,它为每一行提供一个唯一的修订号。

Doctrine 是否真的为这种行为提供了支持?我在网上找不到任何建议这样做的东西。

0 投票
1 回答
801 浏览

hibernate - 如何解决休眠 Envers 配置错误?

您好,我正在对所有模型类使用休眠 hbm 文件。现在我需要审核该课程的详细信息。我尝试使用休眠环境。我创建了一个带有@Auditedannotation 的新类。然后我hibernate.cfg.xml用我的新课程和 Envers 配置(如<listener class="org.hibernate.envers.event.AuditEventListener" type="post-insert"/> 等)来配置我的。

当我启动apache时,我得到了

设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建文件中定义的名称为“sessionFactory”的 bean 时出错

我对hibernate envers很陌生......我用谷歌搜索了它......但我无法理解......谁能帮助我如何重新爱它......

提前致谢

0 投票
1 回答
2697 浏览

java - 在 Hibernate Envers 中是否可以查询给定版本的所有实体?

我正在寻找Hibernate Envers来为我解决两个问题。首先是审计,很好。其次是能够回滚修订中所做的更改。这将由

  • 查找修订中修改的所有实体
  • 查找每个实体对应的先前版本
  • 创建有效逆转所做更改的新版本 (new->delete,delete->new,update->update)
  • 提交新对象

但是,我看不到查询特定修订的实体列表的方法。有一种方法可以在类级别而不是全局级别执行此操作。这可能吗?

0 投票
2 回答
1753 浏览

java - 如果您在不更改任何字段值的情况下更新,Hibernate Envers 是否会创建对审计表的修订?

我目前正在测试休眠环境,我对它的行为感到困惑。有时,当我们在不做任何更改的情况下进行更新时,它不会记录审计。但目前,确实如此。只是想确定。

0 投票
1 回答
4134 浏览

java - Hibernate Envers:审计表中没有用于级联删除的删除条目

我正在使用 Hibernate envers 来跟踪对我的数据库对象所做的所有更改。这些对象有时通过(单向)父子关系相关。因为我需要应该列出所有已删除对象的查询,所以我依靠 envers 上的审计表来标记已删除对象(*_aud 表中的 revtype 列)。但是,当它们的父对象被删除时,似乎没有为我的任何子对象创建这些条目。

我的对象类如下所示:

我怀疑它与以某种方式绕过休眠环境的级联删除操作有关。如何在创建子对象的审计表中的条目的同时确保在删除引用的父对象时所有子对象都被数据库自动删除?

0 投票
1 回答
4084 浏览

hibernate - Hibernate - Envers -> 属性的审核/版本控制,但前提是值更改

我对 Hibernate - Envers 有疑问。我有一个域对象,它只有一个审核属性status,可以是数字 0、1、2、3、4、5 之一。

现在,Envers 和 Hibernate 中的一切都在工作。创建一个新的 Item 对象并将其添加到数据库中,将一行插入到Item_AUD数据库表中。

但是现在我在更新它时遇到了问题。我在 Hibernate Dao 实现中的更新如下所示:

在每次更新时,这都会打印在我的控制台上:

但问题是,我只想在状态编号发生变化的情况下插入REVINFO一行Item_AUD

例如:我更改了description项目,通过调用执行更新,updateItem然后 Envers 将新修订写入审计表。但我不想要这种行为。

我想要的是:只有当 的值status发生变化时,Envers 才应该将数据库条目写入审计表中。

但是我该怎么做呢?

最好的问候,蒂姆。

0 投票
1 回答
4027 浏览

hibernate - Hibernate hbm 文件中的 @Audited 注释

我在我的应用程序中使用 Hibernate 作为我的 orm。

现在我想将它与 Envers 集成。目前我正在使用 hbm 文件生成实体。在那种情况下,我怎么能在 hbm 文件中提到生成类必须有 @Audited 注释。

谢谢,
纳伦德拉

0 投票
1 回答
2316 浏览

hibernate - Envers @OneToMany 在 CREATE(0) 上审计,但在 DELETE(2) 上不审计

我看过很多类似的问题,例如:http: //community.jboss.org/message/580407#580407但还没有找到解决方案。

一个活动有许多事件,当一个事件被创建时,activity_occurence_AUD 表被正确更新为 0(创建)修订。

但是,当删除发生时,activity_occurence_AUD 表不会填充 2(删除)修订。

活动实体:

休眠属性:

任何帮助将非常感激。

奇怪的是更新有效但删除无效。

让我知道我是否可以提供更多信息。

0 投票
1 回答
4379 浏览

hibernate - 使用 HibernateTemplate 的 Spring 的 Hibernate Envers

我正在尝试在 Spring 环境中设置 Envers。当我从 SessionFactory 手动检索会话并将所有内容放入事务时,一切正常:

上面的代码将数据插入到 TestEntity 表中,并更新了 AUD 和 REVINFO 表。

但是,当我使用我们的 DAO 更新表时,Envers 特定表没有任何反应。我怀疑原因可能是在 DAO中使用了 HibernateTemplate 。

我的 SessionFactory 的 Spring-config 如下所示:

我已经阅读了很多论坛和博客条目,包括这个链接到 Envers FAQ 的条目,但在我的情况下似乎没有提到任何内容。

有谁知道,是否可以使用 HibernateTemplate(而不是 JPA)将 Envers 配置为与 Spring 一起工作?我需要更改配置的哪些部分?在这种情况下,Hibernate 文档/API 的哪些部分值得一看(恐怕我还不是 Hibernate 专家)?有人可以提供工作配置的代码示例吗?

我正在使用 Spring 3.0.1 和 Hibernate 3.5.1。

0 投票
1 回答
1542 浏览

java - forRevisionsOfEntity 很慢

我正在使用以下方法查询大于时间戳的类的所有修订:

这是@ManyToOne使用查询重新创建一个引用的对象:

这个查询非常慢,仅针对一个实体就需要 100 多分钟(事实上,在我写这篇文章的时候它还在继续)。为什么它会获得实体的最新版本(减去 DEL 版本)?ORDER BY REV LIMIT 1使用 a (或类似的数据库没有)要快得多LIMIT。我几乎只想直接使用 SQL,因为这太慢了。它也可以通过直接在子查询中使用 id 而不是引用查询的表 id 来加速。我在DTYPE,REVREVTYPE, 上有索引,在 id 上有一个唯一键,REV所以这不是索引问题。

我不确定它为什么要使用上述查询来重新创建引用的对象,并希望有任何见解。这是在奔腾 4 机器上的 MySQL 5.1 数据库上,但在双核机器上也需要相当长的时间。