java - hibernate 恩弗斯 : How to get revision from historical entity

标签 java hibernate hibernate-envers

我一定错过了一些明显的东西;然而,我正在努力寻找 Hibernate Envers 遇到的问题的答案。

假设我有一个名为 MyObject 的实体类,它是使用 envers 进行审核的。

如果我获取 MyObject 实例的当前副本,执行以下操作:

Session session = sessionFactory.getCurrentSession();
MyObject myobject1 = (MyObject) session.get(MyObject.class, 1234);

我得到了同一实例的历史副本(来自修订版 2):

Session session = sessionFactory.getCurrentSession();
AuditReader reader = AuditReaderFactory.get(session);
MyObject myobject2 = reader.find(MyObject.class, 1234, 2);

有什么方法可以区分 myobject1 和 myobject2 吗?我如何知道 myobject1 是当前副本而 myobject2 来自修订版 2?​​

最佳答案

没有“官方”方式。两者都只是用不同数据实例化的对象。

不过,您可以检查 session 是否包含 myobject1/myobject2 (使用 contians 方法: http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Session.html )。只要您不清除或更改持久性上下文,这就会起作用,并且将为“当前”实体返回 true ,为历史实体返回 false 。但这更多的是一种变通办法,而不是适当的解决方案。

关于java - hibernate 恩弗斯 : How to get revision from historical entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18911454/

相关文章:

java - testng.xml 中的多个测试套件在 jar 内不起作用

java - Java中的有序LinkedList逻辑,每次都会重新分配LinearNode头

java - 将数组添加到 ArrayList

java - 交易延长时段

java - 使用 jdbcTemplate 时如何手动处理事务?

java - HTTP 状态 404 - Servlet 调度程序不可用

java - 切换mysql数据库连接

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

java - Hibernate Envers 在持久化数据后立即得到修订

java - 启用:在OneToMany上检索实体时发生异常