Hibernate Envers Audit Listeners 未注册,即使实体已使用 @Audit 注释

Hibernate Envers Audit Listeners are not registered even though entity are Annotated with @Audit

我有 Spring4.1.2、Hibernate 4.2.18、Jboss6 应用程序。我已经配置了实体和一个自定义修订实体。但是 Envers 听众仍然没有注册到 listenerRegistry。

我尝试调试反向源,发现源 [EnversIntegrator.integrate 方法] 正在跳过侦听器,因为它找不到任何审计表。

我也找到了根本原因。当我深入研究时,AnnotationsMetaDataReader.getDefaultAudited 方法中的代码 'clazz.getAnnotation(Audited.class)' 总是 returns 为空。 我确定实体 class.

中存在 Audited 注释

这似乎很奇怪,因为它在另一个示例应用程序中运行得很好。

这似乎是一个 class 加载问题。请确保所需的 envers 到位。

您的应用程序是否使用 Jboss 模块 'org.hibernate' 而不是 War 中的休眠 jars?如果是这样,请在您的应用程序中配置 jboss 模块 'org.hibernate.envers'。