2012-09-11 51 views
2

我在使用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文件相關性中。

回答