2013-07-30 15 views
11

Sınıf varlıklarını bir J2SE persistence.xml dosyası olarak bildirmemesi için JPA @Entity ek açıklamalarından yararlanmak istiyorum. Ne önlemek istiyorum: BuradaBir persistence.xml dosyasında kalıcı sınıfları bildirmemesi için JPA öğelerini taramanın bir yolu var mı?

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <class>com.mycompany.entities.Class1</class> 
    <class>com.mycompany.entities.Class2</class> 
    <class>com.mycompany.entities.Class3</class> 
</persistence-unit> 

ve benim gerçek persistence.xml

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties> 
     <!-- Scan for annotated classes and Hibernate mapping XML files --> 
     <property name="hibernate.archive.autodetection" value="class, hbm" /> 
     <property name="hibernate.cache.use_second_level_cache" value="false" /> 
     <property name="hibernate.cache.use_query_cache" value="false" /> 
     <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
    </properties> 
</persistence-unit> 

içinden bir persistence.xml dosyasında JPA varlıkları taramak için standart bir yol var mı benzemek neyi edilir bir JAR modülü? JPA varlıklarını bir persistence.xml dosyasında JAR modülünden taramak için standart dışı Hazırda Bekleme yolu var mı?

cevap

14

-Teknelerinizi ve persistence.xml öğelerinizin, kavanozunuzu oluştururken aynı sınıf yolunda sonlandığından emin olun.

Nesneler, başka bir sınıf yolunda oturuyorlarsa taranamazlar. Eğer onları farklı sınıf yollarında oturtmak zorundaysanız, onu işe yaradığını gördüğüm bir hileler: No autodetection of JPA Entities in maven-verify.

Bir şeyin nerede bittiğinden emin değilseniz, .jar dosyasını ve en yüksek değeri kaldırabilirsiniz. Bu Ambalajsız kalıcılık web projesi:

Unpacked Web Persistence JAR

Bildirimi benim sınıfları com dizinde aşağı ve benim persistence.xml META-INF dizininde olduğunu. Her ikisi de aynı "sınıflar" sınıfındadır, bu yüzden autoscan çalışacaktır.

-Set hibernate.archive.autodetection özelliği. kalıcılık-birimin sizin için çalışacaktır olanların

<persistence-unit name=...> 
<exclude-unlisted-classes>false</exclude-unlisted-classes> 
    ... 

Umarım bir sahte -Add

<!-- Scan for annotated classes and Hibernate mapping XML files --> 
<property name="hibernate.archive.autodetection" value="class, hbm" /> 

.

+0

Evet, öyle görünüyor ama benim durumumda çalışmıyor. \t Burada hibernate.archive.autodetection özelliği tanım: ".par arşivi ayrılırken Hazırlık Sınıfı Var otomatik olarak keşfedilen öğeyi belirler. (Varsayılan, sınıf hbm)." Ama bir .par arşivi nedir? Böyle bir arhive hiç duymadım. – 1tox

+0

NB: Orijinal gönderiyi güncelledim – 1tox

+0

.par arşivi, varlıklarınızın ve persistence.xml öğelerinizin alınabileceği kalıcılık arşiv dosyasıdır. Bu gerekli değildir, bu yüzden endişelenmeyin (https://forum.hibernate.org/viewtopic.php?f=9&t=947671 adresinde hazırda bekleyen bir takım üyesinin son gönderisine bakın). Başka bir öneri, kalıcılık biriminize yanlış eklemek olabilir. – Cody

İlgili konular