Автоопределение объектов JPA из модуля JBoss

У меня есть модуль EJB M, содержащийся в модуле EAR.

M зависит от jar-файла data-model.jar, установленного как модуль JBoss и правильно загруженного с помощью jboss- файл развертывания-structure.xml.

Модуль работает без проблем, но я не могу не добавить каждую сущность как тег <class> в файл persistence.xml.

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
         xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

<persistence-unit name="persistenceUnitName" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:/datasource</jta-data-source>

    <class>com.bla.persistence.entity.EntityOne</class>
    <class>com.bla.persistence.entity.EntityTwo</class>
    ...

Итак, возникает вопрос: есть ли способ указать постоянные управляемые классы, связанные с единицей сохранения, загружающей их из модуля JBoss, без добавления их всех в качестве тегов класса в файл persistence.xml?

По умолчанию единица сохраняемости связана с аннотированными управляемыми классами сохраняемости, содержащимися в корне единицы сохраняемости (ed jar-файл, в котором находится файл persistence.xml) (документы).

Я попытался добавить:

<exclude-unlisted-classes>false</exclude-unlisted-classes>

но это ничего не меняет (я читал, что приложения Java EE все равно используют это значение по умолчанию).

Я также мог бы использовать:

 <jar-file>?</jar-file>

но я не знаю, как обратиться к модулю JBoss (и жесткое кодирование имени файла модуля кажется мне очень плохой практикой).

Работать с:

  • JBoss EAP 6.4
  • Спящий режим 4.2.18
  • JPA 2

person Linuslabo    schedule 29.01.2016    source источник


Ответы (1)


Вам не нужно добавлять сущности в виде тегов <class> в файл persistence.xml.

Просто добавьте параметр автосканирования в файл persistence.xml.

<!-- Scan for annotated classes and Hibernate mapping XML files -->
<property name="hibernate.archive.autodetection" value="class, hbm" />

Чтобы это работало, persistence.xml и объекты сущностей должны находиться в одном пути к классам.

Если у вас нет файла persistence.xml в том же пути к классам, что и сущности, добавьте эту конфигурацию в файл persistence.xml.

<persistence ...>
<persistence-unit ...>
    <jar-file>${project.build.outputDirectory}</jar-file>
    ...
</persistence-unit>

person Davit Mumladze    schedule 03.02.2016
comment
Я сделал это, и он все еще не находит сущности. Любая идея? - person ViniciusPires; 26.02.2016