我在使用Envers时遇到了依赖关系问题。
在Envers世界的某个地方,存在对类org.hibernate.integrator.spi.Integrator
的依赖。这可以在hibernate-core.4.1.7.Final
中找到
然而,如果我使用hibernate-core.4.1.7.Final
,那么我在org.hibernate.event.PreCollectionUpdateEventListener
上得到了一个依赖性问题(NoClassDefFoundError
),可以在hibernate-core.3.6.10.Final
中找到。
所以我有点塞了,因为Maven不会把这两个版本都放在类路径上。
任何有解决方案/想法/解决方案的聪明人。
谢谢Adam
更新:谢谢你的回复@adamw,但这不起作用。让我更深入地了解一下我所做的:
build.xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
<version>4.1.7.Final</version>
</dependency>
然后在我的实体代码中输入:
@Audited
@Entity
public class Company
...
现在,当我运行集成测试时,不会创建_AUD表。
因此,我将其添加到persistance.xml
文件中(如此处所示):
<properties>
<property name="hibernate.ejb.event.post-insert" value="org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.post-update" value="org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.Audit.EventListener" />
<property name="hibernate.ejb.event.post-delete" value="org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.pre-collection-update" value="org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.pre-collection-remove" value="org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.post-collection-recreate" value="org.hibernate.envers.event.AuditEventListener" />
</properties>
然后我得到一个Spring错误,导致:
javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build EntityManagerFactory
那么我该如何解决这个问题呢?其他人在使用Spring、Envers和Maven时有这个问题吗?
哦,顺便说一下。在properties.xml
代码段中指定的侦听器在任何一个jar文件依赖项中都不存在。
好吧,你需要将Hibernate 4.1.7与Envers 4.1.7一起使用,或者将Hibernat 3.6.10与Enverss 3.6.10一起使用:)
更新:
现在您使用了错误的文档:)。从4.x开始,您就不需要侦听器了。请参阅此处:http://docs.jboss.org/hibernate/orm/4.1/quickstart/en-US/html/ch05.htmlhttp://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch15.html