我在使用Envers時遇到依賴關係問題。Maven Hibernate和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不會把兩個版本放在classpath中。
任何聰明的人在那裏與解決方案/想法/修復。
感謝 亞當
UPDATE: 感謝您的答覆@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>
然後我拿到導致春季錯誤:
javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build EntityManagerFactory
那麼,如何解決這個問題?使用Spring,Envers和Maven時,其他人是否有這個問題?
哦,順便說一句。在properties.xml
片段中指定的監聽器不存在於任何jar文件相關性中。