Есть ли способ сканирования объектов JPA не объявлять постоянные классы в файле persistence.xml?
Я хотел бы использовать аннотации JPA @Entity, чтобы не объявлять сущности класса файл persistence.xml J2SE. Что я хотел бы избежать:
<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?
Ответы
Ответ 1
-Убедитесь, что ваши объекты и persistence.xml попадают в один и тот же путь к классам при создании вашей банки.
Объекты не могут быть отсканированы, если они находятся в другом пути к классам. Если вам нужно, чтобы они сидели в разных классах, это один трюк, который я видел, чтобы заставить его работать: Автоматическое определение объектов JPA в maven-verify.
Если вы не знаете, где заканчиваются вещи, вы можете разархивировать файл .jar и пик. Это неуправляемый веб-проект настойчивости:
![Unpacked Web Persistence JAR]()
Обратите внимание, что мои классы находятся в каталоге com, а мой persistence.xml находится в каталоге META-INF. Оба находятся в одном и том же классе классов, поэтому автозапуск будет работать.
-Установить свойство hibernate.archive.autodetection.
<!-- Scan for annotated classes and Hibernate mapping XML files -->
<property name="hibernate.archive.autodetection" value="class, hbm" />
-Добавить false в блок персистентности
<persistence-unit name=...>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
...
Надеюсь, один из них будет работать для вас.