我的要求是,出于应用程序审计目的,我想比较两个 BO 对象并将 obj diff 作为 Json 字符串返回,以将详细信息存储到审计表中。为了比较对象,我选择了 Javers。就我而言,我已经实现了一个休眠拦截器,它将监视 BO 操作。这部分工作正常。但是当尝试将 BO 对象与 Javers 进行比较时,我会抛出一个名为
ENTITY_INSTANCE_WITH_NULL_ID: Found Entity instance 'com.myproject.runtime.bo.Result_$$_jvstc5f_5' with null idProperty 'resultid'
这是我的示例休眠结果类
class Result {
@id //javax.persistence.Id
resultid;
name;
etc ...
}
对象比较代码片段
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 比较休眠 BO 对象。也可以忽略@id
属性吗?
注意:Bo 对象可以null
在运行时包含值。