当前位置: 首页 > 面试题库 >

休眠Envers-获取已更改的字段

钮承恩
2023-03-14
问题内容

我有一个相当复杂的数据库结构,正在尝试进行审核。目前,我正在运行Envers,并且它审核对每个对象所做的更改。这真的很好!

我现在想在用户界面上显示一些审核信息。对象/表变得非常复杂,因此我正在寻找一种方法来查看审核中哪些字段已更改。当前Envers存储每个带有修订ID的对象的快照。我可以查看每个对象的修订版本,然后手动查询以查看发生了什么更改,但是我想知道是否有一种方法可以Envers存储哪些字段已更改。这可能吗?我从2011年开始找到此链接,建议您手动检查每个对象字段。我在这里关心的是速度。我有很多相关的对象,可能只有一个更新的字段。我将不得不查询很多字段以查找已更改的字段。

是否可以存储已更改的字段?

谢谢

编辑

我应该说我正在使用REVCHANGES表,所以我可以看到在什么修订版本上发生了什么变化,但是同样,这仅在实体级别而不是字段级别


问题答案:

在较新的Envers版本中,您可以使用布尔标志跟踪每个修订版中更改的属性。看到:

http://docs.jboss.org/hibernate/core/4.1/devguide/zh-
CN/html/ch15.html#envers-tracking-properties-
changes



 类似资料:
  • 问题内容: 我有一个包含11列的表,但是我需要在我的应用程序中仅获得2列,我使用的是spring / hibernate / DAO组合。现在,我有一个包含所有11个字段的域类,以及一个映射表中所有11列的映射文件。如何使用仅获得其中的2个? 问题答案: 要么: 使用投影-专业:无添加-缺点:不是类型安全的(结果是一行的行,每行都是: 在SELECT子句中使用构造函数表达式(不需要将指定的类作为实

  • 问题内容: 我将sqlalchemy用作我的orm,并用作Base。 我的问题是,如何知道用户已被修改,以及如何在不再次查询数据库的情况下获取原始值? 提前致谢! 更新 我发现一种方法可以获取字段的历史值,但是我不确定它是否适合我的目的。 因此,我们可以检查的值,但这是最好的方法吗? 问题答案: \要查看是否已修改,可以检查是否。如果它是您要撤消它,则可以执行 但是请注意,这会将会话的所有内容回滚

  • 问题内容: 我在JPA中更新对象时遇到问题 我有豆子用户 和 当尝试更新时给我异常:当表评级包含行时,无法通过反射获得字段值 错误TransactionInterceptor:434-应用程序异常被提交异常com.vodafone.visradio.dataaccess.exception.DataAccessException覆盖:org.hibernate.PropertyAccessExce

  • 问题内容: 我有一个我认为应该很普遍的问题,但找不到答案。 我有2个对象:组和用户。我的课程如下所示: 现在,当我尝试从数据库中获取用户时,它带来了所有组,所有组都带来了所有用户,依此类推。最后,我遇到了stackoverflow异常。 如何解决此问题,并且仍然具有双向关联以及到达列表中对象的能力? 问题答案: 如果使用属性(无论如何都应使用)将双向关联的一侧设为关联的 拥有 侧,是否会遇到相同的

  • 问题内容: 我这样做是为了对实体对象进行延迟加载: 我想与多个延迟加载的集合返回一个实体对象 加载的 ,我能做到这一点(通过在列表中,并设置超过联想单个标准是什么?): 问题答案: 是? 该文档包含以下内容: 该查询将通过外部联接获取伴侣和小猫。有关更多信息,请参见第20.1节“获取策略”。

  • 问题内容: 当我按如下方式调用session.begin事务方法时: 然后我得到以下异常消息 造成此错误的原因是什么? 问题答案: 更新: 我想调用并不能保证该会话实际上是打开的。第一次,您应该使用 代替。该建议实际上与您找到的页面一致。 之前: 根据到目前为止的可用信息,我们可以得出结论,错误的原因是会话未打开;-)