Tôi khá chắc chắn rằng tôi đã sử dụng một số loại phát hiện tự động các bean được chú thích với @Entity trong JPA 2.0 trong quá khứ nhưng tôi không thể tìm ra cách. Làm thế nào để bạn làm điều đó thay vì liệt kê mỗi bean trong một phần tử XML class
trong persistence.xml?Làm thế nào để tự động phát hiện các thực thể trong JPA 2.0
Trả lời
Kể từ mùa xuân 3.1, bạn cũng có tùy chọn để forget persistence.xml hoàn toàn, và cấu hình EntityManagerFactory
của bạn bằng cách sử dụng packagesToScan
bất động sản, tương tự như sau:
<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>
Bạn cần thêm vào persistence.xml
dòng tiếp theo:
<exclude-unlisted-classes>false</exclude-unlisted-classes>
ví dụ
<?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>
Câu trả lời này phải được chấp nhận. –
Xem Pascal Thivent trả lời ở đây: Do I need <class> elements in persistence.xml?
bạn có cách khác nhau để làm điều đó, nhưng JPA chính nó không hỗ trợ tự động quét. Cách đơn giản và sạch nhất để tham chiếu các thực thể của bạn IMHO là đóng gói mô hình của bạn trong một cái bình và tham chiếu nó với <jar-file>MyModel.jar</jar-file>
Tôi biết điều đó, nhưng tôi hỏi về JPA persistence.xml – LuckyLuke
Tôi biết, chỉ muốn đề cập đến tùy chọn này, bởi vì đó là một cách hay để giải quyết vấn đề ở bàn tay (các lớp thực thể tự động phát hiện). – zagyi