我的要求是,对于应用程序审计目的,我想比较两个BO对象并返回一个obj diff作为Json字符串,以将详细信息存储到审计表中。要比较我选择Javers的对象。在我的情况下,我已经实现了一个监视BO动作的hibernate拦截器。这部分工作正常。但是当试图用Javers比较BO对象时抛出一个名为
的错误ENTITY_INSTANCE_WITH_NULL_ID: Found Entity instance 'com.myproject.runtime.bo.Result_$$_jvstc5f_5' with null idProperty 'resultid'
这是我的示例hibernate Result类
class Result {
@id //javax.persistence.Id
resultid;
name;
etc ...
}
Obj比较代码段
public static <B> String compareObjDiff(final B oldBo, final B newBo) {
Javers javers = JaversBuilder.javers().build();
Diff diff = javers.compare(oldBo, newBo);
return javers.getJsonConverter().toJson(diff);
}
请告诉我如何使用javers比较hibernate BO对象。还是可以忽略@id
属性吗?
注意:Bo对象在运行时可以包含null
个值。
答案 0 :(得分:2)
我不确定什么是Hibernate BO对象。 如果你的意思是域对象(实体被Hibernate持久化) - 答案就是这个问题Javers ENTITY_INSTANCE_WITH_NULL_ID when using 2 databases