Некоторые люди, включая меня, боролись с объединением объектов из разных модулей (банок) в единую единицу непрерывности (особенно с JavaSE, например здесь JPA 2.0: добавление классов сущностей в PersistenceUnit * из разных jar * автоматически). На основе ответов нет простого прямого способа сделать это. Одним из решений является перечислить все классы из всех банок в единичном единичном файле, но это не очень элегантно. Возможно, я случайно нашел другой путь. Как правило, все классы сущностей отображаются с помощью аннотаций. Что касается решения: persistence.xml
может содержать несколько файлов сопоставления XML, например:
main.jar META-INF/persistence.xml:
<persistence-unit name="PU" transaction-type="RESOURCE_LOCAL">
<mapping-file>META-INF/order-mappings.xml</mapping-file>
<mapping-file>META-INF/customer-mappings.xml</mapping-file>
</persistence-unit>
Файлы сопоставления могут быть помещены в разные банки. Я заметил, что они могут содержать <entity>
элементы без каких-либо атрибутов, например:
order.jar! META-INF/порядка mappings.xml
<entity-mappings>
<entity class="com.company.Order"></entity>
</entity-mappings>
Даже если файл сопоставления не отображает никаких атрибутов , аннотации в классе Java все равно учитываются, и все, кажется, работает нормально! Это означало бы легко включить объекты из нескольких банок в единую единицу непрерывности, просто включив файлы сопоставления XML из определенных JAR.
Мой вопрос: это разрешенное использование файла сопоставления JPA или просто побочный эффект моего провайдера непрерывности (Hibernate)?