Я уверен, что в прошлом я использовал какое-то автоматическое обнаружение beans, аннотированное с @Entity в JPA 2.0, но я не могу узнать, как это сделать. Как вы это делаете, а не перечисляете каждый bean в элементе XML class
в файле persistence.xml?
Как автоматически обнаруживать объекты в JPA 2.0
Ответ 1
Так как Spring 3.1, вы также можете забыть persistence.xml и настроить EntityManagerFactory
с помощью packagesToScan
, похожее на это:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"
p:packagesToScan="${jpa.entity.packages}">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
p:showSql="${hibernate.show_sql}"/>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
Ответ 2
Вам нужно добавить в persistence.xml
следующую строку:
<exclude-unlisted-classes>false</exclude-unlisted-classes>
например.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" ...>
<persistence-unit name="YourPU" ...>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.level" value="ALL"/>
<property name="eclipselink.ddl-generation"
value="drop-and-create-tables"/>
</properties>
</persistence-unit>
</persistence>
Ответ 3
См. Pascal Thivent здесь: Нужно ли мне <class> элементов в persistence.xml?
у вас есть другой способ сделать это, но сама JPA не поддерживает автоматическое сканирование. Самый простой и чистый способ ссылки на ваши объекты IMHO - это упаковать вашу модель в банку и ссылаться на нее с помощью <jar-file>MyModel.jar</jar-file>