问题标签 [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.
hibernate - 每个实体的可审计字段的存储
我想捕获可审计字段以跟踪特定实体发生的事情是一个好习惯(比如 createdBy、creationDate、modifiedBy、modifiedDate)
我假设如果一个对象从未被修改过,那么只为 SNMPv3 事件捕获以下可审计字段是有意义的(比如 createdBy、creationDate)
我假设如果一个对象可以由多人在创建后修改,例如用户配置文件可以由自己或管理员修改,那么捕获所有上述属性(例如 createdBy、creationDate、modifiedBy、modifiedDate)是有意义的
假设不需要每个实体的审计跟踪历史,将所有可审计属性存储在实体本身中是否有意义
对于上述用例,将审计委托给第三方框架(比如 JBoss Envers - http://www.jboss.org/envers )是否有意义。
假设一个实体(比如采购订单)由用户 X 创建和维护,用户 Y 对上述采购订单进行了一些改进。谁应该被标记为该实体的所有者(是创建者还是修改者)。在这种情况下,creationDate 可能根本没有任何相关性,因此在此处跟踪该字段是否有意义。
注:底层持久层基于JPA,Hibernate 3.3.x
hibernate - 如何从我的审计表中删除条目?
我目前正在使用 Hibernate Envers。
如何删除与我要删除的实体相关的审计表中的条目?我的实体与其他实体没有关系。
我发现我必须在onPostDelete
自定义侦听器的方法中这样做:
我已经阅读了文档,论坛,很多东西,但我无法弄清楚。也许不可能,我不知道。
以前有人做过吗?
java - Hibernate - Envers - 多个审计目标
我已经在使用 Hibernate Envers 来审核用户通过 UI 更新的实体;但是,我也有在后台运行的异步作业,并且想使用 Envers 来审核这些作业。现在,对于 UI,我跟踪哪个 HttpRequest 进行了更改,这给了我日期、用户、会话等。对于后台作业,我想跟踪作业运行的日期以及修改它的确切作业(工作类别)。
是否可以设置 2 个审计实体,1 个用于 UI,1 个用于系统更改?
沃尔特
java - Hibernate Envers - 遍历关系
在我的应用程序中,我有几个经过审计的实体类,例如以下。
它包含与具有各种休眠注释的其他实体的多个 HAS-IS 关系。
我正在使用以下代码片段分析审计跟踪,它从审计表实体返回所有属性值。
工作正常,但这并没有考虑到遍历类中的关系。
我能否以某种方式开发一种递归算法,该算法将检测对象属性的类型,然后进行递归调用?
有没有更好的方法可以完全做到这一点?
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!
怎么了?非常感谢!最好的祝福
列维
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,其他一切都很好。
任何帮助将非常感激。
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.
有什么问题?
非常感谢!李维斯
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 的任何内容创建了一个版本控制系统。我可以从这个伟大应用程序的代码逻辑和设计中汲取灵感,但这似乎有点矫枉过正,我不太喜欢使用非标准解决方案。
所以我的问题,你建议我做什么?您曾经使用过这些选项中的任何一个吗?
非常感谢您的见解。
java - JBoss 环境和巨大的审计表
我正在使用 JBoss Evers 审核我的 Java EE 应用程序,我的应用程序的性质导致审核表增长得非常快。历史数据很少被查询,访问时间不是问题,除了上周的数据。这些数据被频繁查询,访问需要快速。理想情况下,我会拆分数据并将其分布在两个表中,旧数据采用压缩格式。
不幸的是,据我从文档中得知,Envers 不允许将数据分布在多个表上。
有人知道实现这一目标的最佳方法是什么(如果可能,同时仍然使用 Envers)?
hibernate - 用于审计跟踪的 Hibernate 拦截器或事件?
我记录了对某些实体的所有更改的历史记录,并且即将实现类似于Envers的机制来自动处理这个问题。我的问题是是否使用 Hibernate拦截器或它们的事件系统?
拦截器似乎更简单一些,可以满足我的所有需求。Hibernate 自己的文档建议使用拦截器来“跟踪审计信息”。但是他们的审计信息不在每个实体的伴随表中,Envers 使用我想象的事件系统是有原因的。
我正在使用 Spring 3.0 和 Hibernate 3.5(最新版本)。
更新:数据库触发器不适用于这种情况。我很想听听关于休眠拦截器与审计跟踪/更改历史事件的想法。