【发布时间】:2013-04-11 20:56:19
【问题描述】:
我很确定我过去在 JPA 2.0 中使用了某种自动检测带有 @Entity 注释的 bean,但我不知道如何。您如何做到这一点,而不是在 persistence.xml 中的 class XML 元素中列出每个 bean?
【问题讨论】:
标签: java spring jakarta-ee jpa
我很确定我过去在 JPA 2.0 中使用了某种自动检测带有 @Entity 注释的 bean,但我不知道如何。您如何做到这一点,而不是在 persistence.xml 中的 class XML 元素中列出每个 bean?
【问题讨论】:
标签: java spring jakarta-ee jpa
你需要添加到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>
【讨论】:
从 Spring 3.1 开始,您还可以选择完全使用 forget persistence.xml,并使用 packagesToScan 属性配置您的 EntityManagerFactory,类似于:
<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>
【讨论】:
在此处查看 Pascal Thivent 的答案:Do I need <class> elements in persistence.xml?
你有不同的方法来做到这一点,但 JPA 本身不支持自动扫描。恕我直言,引用实体的最简单和最干净的方法是将模型打包在 jar 中并使用 <jar-file>MyModel.jar</jar-file>
【讨论】: