我想在 JBoss 7.1 中使用 hibernate 4.3 的多租户特性。
通过在 jboss-deployment-structure 中添加以下几行,我设法将它包含在我的战争中
<exclusions>
<module name="org.hibernate" />
</exclusions>
并在我的 pom.xml 中添加对休眠核心和实体管理器的依赖项
这使得休眠 4.3 加载但不幸的是我得到了一个错误
java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
这是由于在休眠 4.3 使用 JPA 2.1 时加载了 JPA 2.0
我已经看过这些线程并尝试了他们的建议 Excluding JPA Subsystem from JBoss EAP 6.1 - Trying to use JPA 2.1 in JBoss EAP 6.1 , JBoss AS7 Automatically Loading JPA , Hibernate 4.3.0.Final & Spring Data JPA 1.4.3.RELEASE。
我添加了一个persistence.xml
<property name="jboss.as.jpa.managed" value="false" />
从 Spring Data 中排除 hibernate jpa 2.0
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring-data.version}</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</exclusion>
</exclusions>
</dependency>
从 JBoss Standalone.xml 中完全删除了 JPA 子系统,但没有任何成功。
正如另一个线程中所建议的那样,唯一能解决问题的是在 jboss-deployment-structure 中排除整个 javaee.api
<exclusions>
<module name="javax.persistence.api"/>
<module name="javaee.api"/>
</exclusions>
但这会给我的其余代码带来很多问题。
更新:我的 jboss-deployment-structure.xml 现在是这样的
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
<module name="org.apache.log4j" />
<module name="javax.persistence.api" />
<module name="org.hibernate" />
</exclusions>
<dependencies>
<module name="org.jboss.ironjacamar.jdbcadapters" />
<module name="org.hornetq" />
<module name="org.hornetq.ra" />
<module name="org.jboss.ejb3" />
<module name="org.jboss.ejb-client" />
</dependencies>
</deployment>
</jboss-deployment-structure>
如您所见,我已经尝试了很多没有运气的事情,因此,如果有人有其他想法,非常欢迎。