我正在使用休眠审核来维护以下课程的审核历史记录,
@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。有什么方法可以实现?