Envers の使用中に依存関係の問題が発生しました。
Envers の世界のどこかに、クラスへの依存関係がありorg.hibernate.integrator.spi.Integrator
ます。これはで見つけることができますhibernate-core.4.1.7.Final
ただし、使用するhibernate-core.4.1.7.Final
と、依存関係の問題 ( NoClassDefFoundError
) が発生org.hibernate.event.PreCollectionUpdateEventListener
し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
指示されているように):
<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 ファイルの依存関係のいずれにも存在しません。