2

Envers の使用中に依存関係の問題が発生しました。

Envers の世界のどこかに、クラスへの依存関係がありorg.hibernate.integrator.spi.Integratorます。これはで見つけることができますhibernate-core.4.1.7.Final

ただし、使用するhibernate-core.4.1.7.Finalと、依存関係の問題 ( NoClassDefFoundError) が発生org.hibernate.event.PreCollectionUpdateEventListenerhibernate-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 ファイルの依存関係のいずれにも存在しません。

4

1 に答える 1

3

まあ、Envers 4.1.7 で Hibernate 4.1.7 を使用するか、Envers 3.6.10 で Hibernat 3.6.10 を使用する必要があります:)

アップデート:

今、あなたは間違ったドキュメントを使用しています:)。4.x 以降、リスナーは必要ありません。ここを参照してください: http://docs.jboss.org/hibernate/orm/4.1/quickstart/en-US/html/ch05.html http://docs.jboss.org/hibernate/orm/4.1/devguide/en- US/html/ch15.html

于 2012-09-12T06:44:39.543 に答える