在我当前的项目中,我们需要分配一个带有实体类的JAR,以便与瘦客户端一起使用(尽可能更薄)。注释@Entity(来自JPA)不是问题,但是当使用hibernate-envers @Audited
注释相同的类时,依赖性成为问题。
我现在解决这个问题的想法包括创建一个 @CustomAuditAnnotattion ,并在休眠引导期间将它们识别为hibernate-envers注释,而不是使用Interfaces实体类。 / p>
有些事情是这样的:
@Entity
@CustomAuditedAnnotation
public class MyEnity implements Serializable {
...
}
并且,在休眠期间提升:
...
public void onEntityClassLoad(Class<? extends Serializable> clazz) {
final CustomAuditAnnotation auditAnn = clazz.getAnnotation(CustomAuditAnnotation.class);
if (auditAnn != null) {
Field annField = clazz.getDeclaredField("annotations");
annField.setAccessible(true);
@SuppressWarnings("unchecked")
Map<Class<? extends Annotation>, Annotation> annotations = (Map<Class<? extends Annotation>, Annotation>) annField
.get(clazz);
annotations.put(Audited.class, new Audited() {
@Override
public Class<? extends Annotation> annotationType() {
return Audited.class;
}
@Override
public RelationTargetAuditMode targetAuditMode() {
return RelationTargetAuditMode.valueOf(auditAnn.targetAuditMode());
}
@Override
public ModificationStore modStore() {
return null;
}
@Override
public Class[] auditParents() {
return null;
}
});
}
}
我的上下文是:JbossAS 7.1.1.Final,Hibernate 4.0.1,上面的方法应该留在一个没有分布的JAR(服务器端)。
问题:
如何拦截 hibernate加载映射实体类的那一刻?