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

hibernate - 每个实体的可审计字段的存储

我想捕获可审计字段以跟踪特定实体发生的事情是一个好习惯(比如 createdBy、creationDate、modifiedBy、modifiedDate)

  1. 我假设如果一个对象从未被修改过,那么只为 SNMPv3 事件捕获以下可审计字段是有意义的(比如 createdBy、creationDate)

  2. 我假设如果一个对象可以由多人在创建后修改,例如用户配置文件可以由自己或管理员修改,那么捕获所有上述属性(例如 createdBy、creationDate、modifiedBy、modifiedDate)是有意义的

  3. 假设不需要每个实体的审计跟踪历史,将所有可审计属性存储在实体本身中是否有意义

  4. 对于上述用例,将审计委托给第三方框架(比如 JBoss Envers - http://www.jboss.org/envers )是否有意义。

  5. 假设一个实体(比如采购订单)由用户 X 创建和维护,用户 Y 对上述采购订单进行了一些改进。谁应该被标记为该实体的所有者(是创建者还是修改者)。在这种情况下,creationDate 可能根本没有任何相关性,因此在此处跟踪该字段是否有意义。

注:底层持久层基于JPA,Hibernate 3.3.x

0 投票
4 回答
9248 浏览

hibernate - 如何从我的审计表中删除条目?

我目前正在使用 Hibernate Envers。

如何删除与我要删除的实体相关的审计表中的条目?我的实体与其他实体没有关系。

我发现我必须在onPostDelete自定义侦听器的方法中这样做:

我已经阅读了文档,论坛,很多东西,但我无法弄清楚。也许不可能,我不知道。

以前有人做过吗?

0 投票
1 回答
1296 浏览

java - Hibernate - Envers - 多个审计目标

我已经在使用 Hibernate Envers 来审核用户通过 UI 更新的实体;但是,我也有在后台运行的异步作业,并且想使用 Envers 来审核这些作业。现在,对于 UI,我跟踪哪个 HttpRequest 进行了更改,这给了我日期、用户、会话等。对于后台作业,我想跟踪作业运行的日期以及修改它的确切作业(工作类别)。

是否可以设置 2 个审计实体,1 个用于 UI,1 个用于系统更改?

沃尔特

0 投票
1 回答
3695 浏览

java - Hibernate Envers - 遍历关系

在我的应用程序中,我有几个经过审计的实体类,例如以下。
它包含与具有各种休眠注释的其他实体的多个 HAS-IS 关系。

我正在使用以下代码片段分析审计跟踪,它从审计表实体返回所有属性值。

工作正常,但这并没有考虑到遍历类中的关系。
我能否以某种方式开发一种递归算法,该算法将检测对象属性的类型,然后进行递归调用?
有没有更好的方法可以完全做到这一点?

0 投票
1 回答
1293 浏览

hibernate - @ManyToMany:REVTYPE 只是 ADD

简而言之,我有两个类 Person 和 Attribut:

对于这些类,正确生成了数据库表 people、attributes、attribute_alloc、persons_aud、attributes_aud 和 attribute_alloc_aud。

除了对 Person 中的属性进行审计外,一切都运行良好。在表attribute_alloc_aud 中,更改(例如删除一个属性并向一个人添加一个新属性)被正确跟踪,但总是用REVTYPE ADD 标记。例如:

  • 转;人名;属性ID;REVTYPE
  • 1个;1个;1个;0
  • 1个;1个;2;0
  • 2;1个;1个;0
  • 2;1个;5个;0
  • 3;1个;8个;0

结果是上一次修订中的被审计人具有属性 1、2、5 和 8。正确的只有 8!

怎么了?非常感谢!最好的祝福

列维

0 投票
1 回答
3262 浏览

java - Spring 3.x 和 Hibernate Envers

我在让 Hibernate Envers 在我们的环境中工作时遇到问题。我们正在使用带有 LoadTimeWeaving 的 Spring 3.x。下面是我们的上下文文件:

这是我们的persistence.xml

审计表设置正确,但是当实体被持久化时,审计表中没有存储记录。只有两个字段被审计。另外,因为我们使用 loadTimeWeaving,所以当我们运行单元测试时,我们需要有 -javaagent:/Users/TEST/.m2/repository/org/springframework/spring-instrument/3.0.3.RELEASE/spring-instrument- 3.0.3.RELEASE.jar 作为 JVM 参数,因此 loadTimeWeaving 有效。

除了 Envers,其他一切都很好。

任何帮助将非常感激。

0 投票
1 回答
1722 浏览

hibernate - Hibernate.Envers:@ManyToOne 的 @Audited 抛出异常

有以下两个类,通过多对一注解相关:

如果我删除 @Audited(...) 然后保存 Mitarbeiter,一切正常。但是使用 @Audited-Annotation 会引发以下异常:

java.lang.NoSuchMethodError: org.hibernate.persister.entity.EntityPersister.getIdentifier(Ljava/lang/Object;Lorg/hibernate/engine/SessionImplementor;)Ljava/io/Serializable; org.hibernate.envers.tools.Tools.getIdentifier(Tools.java:67) org.hibernate.envers.tools.Tools.entitiesEqual(Tools.java:50) org.hibernate.envers.entities.mapper.relation.ToOneIdMapper。 mapToMapFromEntity(ToOneIdMapper.java:71) org.hibernate.envers.entities.mapper.MultiPropertyMapper.map(MultiPropertyMapper.java:86) org.hibernate.envers.synchronization.work.ModWorkUnit.(ModWorkUnit.java:48) org.hibernate .envers.event.AuditEventListener.onPostUpdate(AuditEventListener.java:165) org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:200) org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:179) org.

有什么问题?

非常感谢!李维斯

0 投票
3 回答
2245 浏览

hibernate - 如何管理 Grails 中的对象修订?

我需要为我的grails Web 应用程序中的文章实施修订系统。在搜索 grails 论坛、stackoverflow、grails 插件和谷歌搜索互联网后,我最终得到了 3 个选项:

选项 1 - 使用grails Envers 插件(请参阅http://code.google.com/p/grails-envers-plugin/)。有人成功使用过吗?或者在没有插件的情况下使用Envers(请参见此处),但我怎样才能使其与 GORM 一起使用?

选项 2 - 使用我在这里找到的Gvers 插件: https ://github.com/ziftytodd/gvers 。没听说有人用过,请问有谁用过成功的吗?

选项 3 -内置机制Weceem为 Weceem CMS 的任何内容创建了一个版本控制系统。我可以从这个伟大应用程序的代码逻辑和设计中汲取灵感,但这似乎有点矫枉过正,我不太喜欢使用非标准解决方案。

所以我的问题,你建议我做什么?您曾经使用过这些选项中的任何一个吗?

非常感谢您的见解。

0 投票
1 回答
1333 浏览

java - JBoss 环境和巨大的审计表

我正在使用 JBoss Evers 审核我的 Java EE 应用程序,我的应用程序的性质导致审核表增长得非常快。历史数据很少被查询,访问时间不是问题,除了上周的数据。这些数据被频繁查询,访问需要快速。理想情况下,我会拆分数据并将其分布在两个表中,旧数据采用压缩格式。

不幸的是,据我从文档中得知,Envers 不允许将数据分布在多个表上。

有人知道实现这一目标的最佳方法是什么(如果可能,同时仍然使用 Envers)?

0 投票
1 回答
4422 浏览

hibernate - 用于审计跟踪的 Hibernate 拦截器或事件?

我记录了对某些实体的所有更改的历史记录,并且即将实现类似于Envers的机制来自动处理这个问题。我的问题是是否使用 Hibernate拦截器或它们的事件系统

拦截器似乎更简单一些,可以满足我的所有需求。Hibernate 自己的文档建议使用拦截器来“跟踪审计信息”。但是他们的审计信息不在每个实体的伴随表中,Envers 使用我想象的事件系统是有原因的。

我正在使用 Spring 3.0 和 Hibernate 3.5(最新版本)。

更新:数据库触发器不适用于这种情况。我很想听听关于休眠拦截器与审计跟踪/更改历史事件的想法。