我必须遗漏一些明显的东西;但是我很难找到我对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来自revsion 2?
答案 0 :(得分:1)
没有“官方”方式。两者都只是用不同数据实例化的对象。
您可以检查session
是否包含myobject1
/ myobject2
(使用contians
方法:http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Session.html)。只要您不清除或更改持久性上下文,这将有效,并且将为“当前”实体返回true
,为历史实体返回false
。但这更像是一种解决方案,而不是一种适当的解决方案。