【发布时间】:2012-09-11 11:55:35
【问题描述】:
我在使用 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 不会将这两个版本都放在类路径中。
任何有解决方案/想法/解决方案的聪明人。
谢谢 亚当
更新: 感谢@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 文件中(按照here 的指示):
<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 sn -p 中指定的侦听器在任何一个 jar 文件依赖项中都不存在。
【问题讨论】:
标签: maven dependencies hibernate-envers