休眠审核问题

时间:2019-02-11 12:50:39

标签: java spring hibernate orm audit

我正在使用休眠审核来维护以下课程的审核历史记录,

@Entity
@Audited
Class B{

}

@Entity
@Audited
Class C{

}

@Entity
@Audited
class A{
   B b;
   C c;
   /*all getter and setters will be given*/ 
}

因此,当我更新或删除A类的对象时,它将自动添加A,B和C类的经审核的修订版。因此,为了获取A类特定修订版的详细信息。我使用的是find方法像这样的AuditReader

getReader().find(A.class, id, revId);

如果对三个实体A,B和C都进行了审计,它将在该审计修订版中返回各自的数据。    但是,如果尚未将B类视为审核实体,即我从一开始就通过添加 @Audited 批注将A和C类作为审核实体,并且B类是没有任何 @Audited < / em>注释,每当我更新A类对象时,它将自动记录A类和C类的审核修订,因为B类不是受审核实体,因此不会有任何 B_Aud 表,并且没有更改将记录在“审核表”中。现在,在保存了类似的某些数据之后,我将通过添加 @Audited 批注将B类作为已审核实体。现在,如果我们保存A类对象的更改,它将在审计表中记录实体A,B和C的更改。但是,如果我在未将B类作为审核实体的情况下尝试获得特定版本的A类实体,则会抛出异常

org.hibernate.ObjectNotFoundException: No row with the given identifier exists

现在,我想获取指定修订版本的A类对象,并且如果不存在B对象审核,并且在检索A类对象时仅存在A和C审核详细信息,那么我想设置B中最新的审核版本数据 B_Aud 表而不是null。有什么方法可以实现?

0 个答案:

没有答案