我将Web应用程序部署在本地wildfly-11.0.0.Final上 服务器。 但是Wildfly提供了自己的休眠和jpa模块,我 不想使用。我想使用与我一起包装的JPA罐子 应用。
<property name="jboss.as.jpa.providerModule" value="application"/>
到我的persistence.xml
现在,不再能检测到我的实体(用@Entity注释),我必须在我的persistence.xml中像
一样明确命名它们。 <class>com.mycompany.mywebapp.Actor</class>
有什么办法可以解决这个问题?
我尝试了
<jar-file></jar-file>
和
<property name="hibernate.archive.autodetection" value="class, hbm"/>
没有成功。
我的persistence.xml看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="com.mycompany_mywebapp_war_1.0PU" transaction-type="JTA">
<jta-data-source>java:/jboss/sakila</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="jboss.as.jpa.providerModule" value="application"/>
</properties>
</persistence-unit>
</persistence>
编辑:
我使用的是hibernate 5.3.7.final,它实现了jpa 2.2。
我的wildfly服务器提供了休眠模式5.1.10.final和jpa 2.1。
编辑2:
我注意到即使现在的休眠版本为5.3.7。最后仍由wildfly提供的jpa(规范版本2.1)仍在使用,这可能导致此问题。
我尝试在jboss-deployment-structure.xml中禁用wildfly模块:
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.hibernate" />
<module name="javax.persistence.api" />
</exclusions>
</deployment>
</jboss-deployment-structure>
但是现在我面临以下错误:
Cannot upload deployment: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"webapp-1.0.war\".FIRST_MODULE_USE" => "WFLYSRV0153: Failed to process phase FIRST_MODULE_USE of deployment \"webapp-1.0.war\" Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYJPA0019: Could not deploy application packaged persistence provider 'org.hibernate.jpa.HibernatePersistenceProvider' Caused by: java.lang.ClassCastException: class org.hibernate.jpa.HibernatePersistenceProvider"}}
编辑3:
要测试这是否是我最初的问题的原因,我手动更换了jpa jar。不幸的是,这不能解决我的问题。
无论如何,我想知道如何解决未使用打包的jpa jar的问题,以及如何使我的实体再次被自动检测到。有提示吗?