2013-02-22 48 views
21

Bazı insanlar, benim de dahil olmak üzere, farklı modüllerdeki (kavanozlar) varlıkların tek bir kalıcılık birimiyle birleştirilmesiyle uğraşıyorlar (özellikle JavaSE, burada JPA 2.0: Adding entity classes to PersistenceUnit *from different jar* automatically). Cevaplara dayanarak bunu yapmanın kolay bir yolu yoktur. Çözümlerden biri, tek bir kalıcılık birim dosyasında tüm kavanozlardan tüm sınıfları listelemektir, ancak bu gerçekten zarif değildir. Yanlışlıkla başka bir yol bulmuş olabilirim. Genel olarak tüm varlık sınıfları ek açıklamaları kullanılarak eşlenir. çözümüne yönelik olarak:!Birden fazla kavanoz, tek kalıcılık çözümü?

main.jar META-INF/persistence.xml:

<persistence-unit name="PU" transaction-type="RESOURCE_LOCAL"> 
    <mapping-file>META-INF/order-mappings.xml</mapping-file> 
    <mapping-file>META-INF/customer-mappings.xml</mapping-file> 
</persistence-unit> 

haritalama dosyaları farklı kavanozlara yerleştirilebilir persistence.xml birden XML eşleme dosyaları, örneğin içerebilir. Ne fark onlar <entity> unsurları içerebilir hiçbir özelliğe, örneğin olmadan geçerli:!

order.jar META-INF/düzen-mappings.xml

<entity-mappings>  
    <entity class="com.company.Order"></entity>  
</entity-mappings> 

bile eşleme dosyası doesn herhangi bir öznitelikleri eşlemek için Java sınıfındaki ek açıklamalar nolu hesaba katılmıştır ve her şey iyi çalışıyor gibi görünüyor! Bu, belirli JAR'lardan XML eşleme dosyaları dahil edilerek, çoklu kavanozlardan gelen varlıkları tek bir kalıcı birim haline kolayca dahil etmenin mümkün olduğu anlamına gelir.

Sorum şu: bu izin verilen bir JPA eşleme dosyası kullanımı mı yoksa kalıcılık sağlayıcımın (Hibernate) bir yan etkisidir mi?

+0

Üzgünüz, Yorum yap silindi – cproinger

+0

Sorun şu ki bu şekilde çalışmıyor metamodel üretimi. Bu sınıflar için metamodel boş. – kboom

+0

Sorunuz/ipucu için teşekkürler. Günümü kurtardın! ;) – Mirko

cevap

6

Evet, buna JPA belirtimine izin verilir.

XML varlık eşlemeleri, JPA ek açıklamalarını geçersiz kılmak için tasarlanmıştır. Varsayılan davranışı, özellikle <xml-mapping-metadata-complete/> etiketini kullanarak değiştirmediğiniz sürece, JPA sağlayıcısı, XML eşlemesinin olmadığı ek açıklamaları kullanır. içerdiği XML Tanımlayıcısı'ndan

ait

12,1 kullanın ... yokluğu veya xml-haritalama-meta-komple alt öğesi arasında mevcut: Burada

JPA 2.0 spec bir alıntıdır varlık eşleştirmelerinin öğesinin kalıcılık birimi varsayılanları alt öğesi, XML nesnesi/ilişkisel eşleme tanımlayıcısının öğesinin seçime bağlı olarak ek açıklama değerlerini geçersiz kılıp kılmadığını veyahizmet edip etmediğini denetler. Java dili meta veri ek açıklamalarına tam bir alternatif olarak. xml-haritalama-meta-komple alt öğesi belirtilirse Eğer

, sebat birimi için haritalama meta komple set sınıfları üzerinde herhangi kalıcılık ek açıklamaları sebat birimi için, XML eşleme dosyalarına bulunması ve içerisinde göz ardı edilir.

İlgili konular