我们正在使用 Hibernate Envers 并且有以下情况:
一个类BusinessObjectType
和一个类Identity
引用BusinessObjectType
:
@Entity
@Table( name = "ID_IDENTITY" )
@Audited
public class Identity {
@ManyToOne
@JoinColumn( name = "BO_TYPE_ID" )
@IndexColumn( name = "INDEX_BO_BO_TYPE" )
private BusinessObjectType businessObjectType;
[…]
}
然后,我们使用以下命令查询所有版本的 Identity:
AuditQuery auditQuery = auditReader.createQuery().forRevisionsOfEntity(
Identity.class,
false,
true );
auditQuery.add( AuditEntity.id().eq( dbid ) );
@SuppressWarnings( "unchecked" )
List< Object[]> history = (List< Object[]>) auditQuery.getResultList();
如果存储的身份没有BusinessObjectType
(即businessObjectType
是和是空的)一切都像一个魅力。
如果身份有,businessObjectType != null
我们会得到“Javassist Enhancement failed”异常:
Javassist Enhancement failed: ch.ethz.id.wai.baseclasses.BusinessObjectType
该错误似乎与尝试实例化 BusinessObjectType 的 Envers 有关,但我并没有真正看到问题所在(如果我们不使用 AuditQuery,Hibernate 对这两个对象都没有问题)。
异常的原因是
java.lang.InstantiationException: ch.ethz.id.wai.baseclasses.BusinessObjectType_$$_javassist_49
没有堆栈跟踪。
关于问题可能是什么的任何提示?