2

我在使用 Envers 时遇到了依赖问题。

在 Envers 世界的某个地方,存在对 class 的依赖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 文件依赖项中都不存在。

4

1 回答 1

3

好吧,您需要将 Hibernate 4.1.7 与 Envers 4.1.7 一起使用,或者将 Hibernat 3.6.10 与 Envers 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-美国/html/ch15.html

于 2012-09-12T06:44:39.543 回答