2009-09-14 17 views
6

Hazırda bekletme bileşenini bir bileşen sınıfını ayrı bir tabloda depolayacak şekilde yapılandırmak mümkün mü? iki sütun propA ve propB ile MyClass denilenHazırda bekletme bileşenlerini ayrı bir tabloya eşleme

<class name="test.ClassA"> 
    <property name="propA"/> 
    <component name="componentProp" class="test.ClassB"> 
     <property name="propB"/> 
    </component> 
</class> 

Bu tabloya eşleştiren:

aşağıdaki örneğini ele alalım. İstediğim şey, bileşenin özelliklerini ClassB adlı bir tabloya eşlemektir. Bu normal bir ilişki dışladı böylece

yapmak istemiyor yapmam Ne, başlı başına bir varlık (o ClassA dışında anlamlı bir kimliğe sahip) olarak ClassB yapılandırmak olduğunu. Ayrıca, nesne modelini değiştiremiyorum (üretilen kod), bu nedenle ClassB'a bir ID özelliği ekleyemiyorum.

Bu hazırda bekleme işlevselliği bir boşluk gibi görünüyor - "çoklu-bir-tablosunun sınıflar-" ve < katılmak < bileşen> haritalama gerçekleştirir> yapar "tek sınıf-to-çoklu-tablolar", ancak garip bir şekilde "çoklu-sınıftan çoklu masalara", varlık derneklerine başvurmadan açık bir yol yoktur.

Bunu istemek için benim mantığım, DB şemasının, nesne modeline pratikte olduğu kadar yakın olmasını ve ClassB bileşenine ait ayrı tabloları içermesini istemektir. Bunun ölçeklenmeyeceğini anlıyorum - örneğin iç içe geçmiş bileşenler yapamazsınız, ancak bu özel durum için sorun değil. Sen birlikte <join> ve <component> kullanabilirsiniz

cevap

6

, yoksa sorunuzu yanlış mı? (Besbelli) yabancı bir anahtar gerekiyor olsa

<class name="test.ClassA"> 
    <property name="propA"/> 

    <join table="ClassB"> 
    <key column="ClassA_id" /> 
    <component name="componentProp" class="test.ClassB"> 
     <property name="propB"/> 
    </component> 
    </join> 

</class> 

, bu nesne modelinde eşlenmesi zorunda değildir. Açıkça katılır içinde haritalama bileşenleri hakkında hiçbir şey söylemez yukarıdaki linkten :-) gelen

Belgeleri bunları nereden biliyor sadece ben biliyorum tamamlayıcı olması için, ancak DTD buna izin yok - ilişkin ayrıntılar here edilir katılmak ve 3.1'de çalıştım, bu yüzden hala iyi çalıştığından eminim. Bununla birlikte, bunu ek açıklamalarla nasıl eşleştireceğinizi (veya mümkün olup olmadığını) bilmiyorum.

+0

Ah, bu sadece ihtiyacım olan şeye benziyor. Onu bir spin için çıkartacağım ve biletin olup olmadığını göreceğim. – skaffman

+0

Bu tekniği "Hazırda Bekletme ile Java Kalıcılık" bölümünde 8.1.3 bölümünde belgelenmiş buldum. Ses görünüyor. Tekrar teşekkürler. – skaffman

+0

Teşekkürler. Bir şekilde bu kitabı okumayı başaramadım :-) – ChssPly76

İlgili konular