2013-07-30 6 views
11

Я хотел бы использовать примечания JPA @Entity, чтобы не объявлять сущности класса файл persistence.xml J2SE. То, что я хотел бы избежать:Есть ли способ сканирования объектов JPA не объявлять постоянные классы в файле persistence.xml?

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <class>com.mycompany.entities.Class1</class> 
    <class>com.mycompany.entities.Class2</class> 
    <class>com.mycompany.entities.Class3</class> 
</persistence-unit> 

и вот что мои фактические persistence.xml похожи

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties> 
     <!-- Scan for annotated classes and Hibernate mapping XML files --> 
     <property name="hibernate.archive.autodetection" value="class, hbm" /> 
     <property name="hibernate.cache.use_second_level_cache" value="false" /> 
     <property name="hibernate.cache.use_query_cache" value="false" /> 
     <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
    </properties> 
</persistence-unit> 

Есть стандартный способ сканирования JPA объекты в файле persistence.xml изнутри модуль JAR? Существует ли нестандартный способ Hibernate для сканирования объектов JPA в файле persistence.xml из модуля JAR?

ответ

14

-Убедитесь, что ваши объекты и persistence.xml попадают в один и тот же путь к классу, когда вы строите свою банку.

Сущности не могут быть отсканированы, если они находятся в другом пути к классам. Если вам нужно, чтобы они сидели в разных классах, это один трюк, который я видел, чтобы заставить его работать: No autodetection of JPA Entities in maven-verify.

Если вы не знаете, где заканчиваются вещи, вы можете разархивировать файл .jar и пик. Это распакованы сохранение веб-проект:

Unpacked Web Persistence JAR

Обратите внимание мои классы вниз каталог ком, и мой persistence.xml находится в каталоге META-INF. Оба находятся в одном классе classpath, поэтому автозапуск будет работать.

-Установить спящий режим.архив.автодеттинг имущества.

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

-Добавить ложь к персистенции-блок

<persistence-unit name=...> 
<exclude-unlisted-classes>false</exclude-unlisted-classes> 
    ... 

Надеюсь, один из тех, кто будет работать для вас.

+0

Да, это похоже, но в моем случае это не работает. \t Вот определение свойства hibernate.archive.autodetection: «Определите, какой элемент автоматически обнаруживается Hibernate Entity Manager при анализе .par-архива. (Default to class, hbm).». Но что такое .par-архив? Я никогда не слышал об этом архиве. – 1tox

+0

NB: я обновил исходное сообщение – 1tox

+0

................................ Это не требуется, поэтому не беспокойтесь об этом (см. Последнее сообщение от члена команды Hibernate: https://forum.hibernate.org/viewtopic.php?f=9&t=947671). Другим предложением было бы добавить: false в ваш блок persistence. – Cody

 Смежные вопросы

  • Нет связанных вопросов^_^