Я развертываю свое веб-приложение на локальном сервере wildfly-11.0.0.Final.Однако, Wildfly предоставляет свои собственные модули hibernate и jpa, которые я не хочу использовать.Я хочу использовать jpa-баночки, прилагаемые к моему приложению.
Как описано в https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-PackagingtheHibernateJPApersistenceproviderwithyourapplication, я добавил строку
<property name="jboss.as.jpa.providerModule" value="application"/>
в мою настойчивость.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 предоставляет hibernate 5.1.10.Final с jpa 2.1.
Edit 2:
Я заметил, что, хотя версия hibernate теперь 5.3.7. Наконец, jpa предоставлен wildfly (версия спецификации 2.1) все еще используется, что может быть причиной этой проблемы.
Я попытался отключить модули wildfly в jboss-deploy-structure.xml:
<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 не используется, и как заставить мои сущности автоматически обнаруживаться снова.Есть намеки?