所提到的错误是由于依赖项版本可能存在冲突而发生的。
WildFly 已经提供了这两种功能休眠核心 and 休眠验证器依赖于\modules\system\layers\base\org\hibernate.
对于 WildFly10,依赖项的版本如下:
- hibernate-core-5.0.7.Final
- hibernate-validator-5.2.3.Final
因此,对你的pom.xml,您可以按照提供的方式放置 Hibernate 依赖项,并让容器使用自己的依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.0.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
<scope>provided</scope>
</dependency>
但是如果您想提供自己的依赖项,如上所述WildFly 10 文档,你应该提供一个jboss-部署-结构.xml,你基本上告诉 WildFly 忽略它自己的依赖关系:
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.hibernate" slot="main" />
</exclusions>
</deployment>
</jboss-deployment-structure>
这样,容器将加载与您的应用程序一起打包且存在于您的 WAR 中的依赖项WEB-INF/lib folder.
EDIT
去之后源代码 of PersistenceUtilHelper.isLoadedWithoutReference
,人们注意到,在 Hibernate 5.1 中,它不再引用该类FieldInterceptionHelper
,在第 119 行,错误发生的地方。而在 5.0 版本中仍然如此.
我还建议您添加最新版本的Hibernate实体管理器依赖关系,以便与其他 Hibernate 依赖关系一致:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>