2013-04-18 26 views

Trả lời

8

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> 
+4

Tôi biết điều đó, nhưng tôi hỏi về JPA persistence.xml – LuckyLuke

+0

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

15

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> 
+2

Câu trả lời này phải được chấp nhận. –

0

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>

Các vấn đề liên quan