使用打包的Hibernate JPA持久性提供程序时未检测到实体

时间:2019-01-01 21:35:05

标签: java hibernate jpa wildfly persistence.xml

我将Web应用程序部署在本地wildfly-11.0.0.Final上    服务器。  但是Wildfly提供了自己的休眠和jpa模块,我    不想使用。我想使用与我一起包装的JPA罐子    应用。

如    https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-PackagingtheHibernateJPApersistenceproviderwithyourapplication    我添加了行

<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的问题,以及如何使我的实体再次被自动检测到。有提示吗?

0 个答案:

没有答案