由于依赖项版本之间可能发生冲突,导致发生上述错误。
WildFly已经在 < wildfly_dir> modules system layers base org
hibernate中_提供了 _hibernate-core 和 hibernate-validator 依赖项。 __
对于WildFly10,依赖项的版本如下:
- hibernate核心5.0.7。最终版
- hibernate-validator-5.2.3。最终
因此,可以在 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-deployment-structure.xml ,您基本上可以在其中告诉WildFly忽略其自身的依赖关系:
<jboss-deployment-structure> <deployment> <exclusions> <module name="org.hibernate" slot="main" /> </exclusions> </deployment></jboss-deployment-structure>
这样,容器将加载与应用程序一起打包的依赖关系,这些依赖关系存在于WAR的 WEB-INF / lib 文件夹中。
编辑
转到的源代码后
PersistenceUtilHelper.isLoadedWithoutReference,人们注意到,在Hibernate
5.1中,它不再引用第
FieldInterceptionHelper119行发生错误的class
。在5.0版中它仍然可以使用。
我还建议您添加最新版本的 hibernate-entitymanager 依赖项,以便与其他Hibernate依赖项保持一致:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.1.0.Final</version></dependency>



