2009-09-14 11 views
6

क्या एक अलग तालिका में एक घटक वर्ग को स्टोर करने के लिए हाइबरनेट को कॉन्फ़िगर करना संभव है?हाइबरनेट घटकों को एक अलग तालिका में मैपिंग

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

यह एक मेज पर नक्शे दो कॉलम propA और propB साथ MyClass कहा जाता है:

निम्नलिखित उदाहरण लें। मैं चाहता हूं कि घटक के गुणों को ClassB नामक तालिका में मैप करना है। ताकि एक सामान्य संघ बाहर नियम

नहीं करने के लिए मैं क्या कर चाहते हैं, अपने आप में एक इकाई (यह ClassA के बाहर कोई सार्थक पहचान है) के रूप में ClassB कॉन्फ़िगर है। इसके अलावा, मैं ऑब्जेक्ट मॉडल (यह जेनरेट कोड) को संशोधित नहीं कर सकता, इसलिए मैं ClassB पर एक आईडी प्रॉपर्टी पेश नहीं कर सकता।

यह हाइबरनेट की कार्यक्षमता में एक अंतर है - < घटक> मानचित्रण "एकाधिक-वर्ग-से-एक-तालिका" करता है, और < जुड़ता है> "एक-वर्ग-से-एकाधिक-टेबल" करता है, लेकिन विचित्र रूप से इकाई संघों का उपयोग किए बिना "एकाधिक-वर्ग-से-एकाधिक-टेबल" करने का कोई स्पष्ट तरीका नहीं है।

यह चाहते हुए मेरा तर्क यह है कि मैं चाहता हूं कि मेरा डीबी स्कीमा ऑब्जेक्ट मॉडल जैसा दिखता हो उतना निकटता जैसा दिखता हो, और इसमें ClassB घटक के लिए अलग-अलग टेबल शामिल हैं। मैं समझता हूं कि यह स्केल नहीं करेगा - उदाहरण के लिए, आप नेस्टेड घटक नहीं कर सके, लेकिन यह इस विशेष स्थिति में कोई समस्या नहीं है।

उत्तर

6

आप <join> और <component> का उपयोग कर सकते हैं, या मैंने आपके प्रश्न को गलत समझा?

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

जबकि आपको (जाहिर है) एक विदेशी कुंजी की आवश्यकता है, तो इसे ऑब्जेक्ट मॉडल में मैप नहीं किया जाना चाहिए। पर विवरण में शामिल होने here कर रहे हैं - पूर्णता के लिए प्रदान की केवल, मुझे पता है क्या आप जानते हैं जहां ऊपर के लिंक पर :-) से उन्हें प्राप्त करने

प्रलेखन स्पष्ट रूप से जुड़ जाता है भीतर मानचित्रण घटकों के बारे में कुछ नहीं कहा है, लेकिन DTD यह समर्थ बनाता है, और मैंने इसे 3.1 में काम किया है, इसलिए मुझे पूरा यकीन है कि यह अभी भी ठीक काम करता है। हालांकि, एनोटेशन के साथ इसे मैप करने के लिए कैसे (या यह संभव है) नहीं जानते हैं।

+0

आह, यह वही दिखता है जो मुझे चाहिए, इसके लिए धन्यवाद। मैं उसे एक स्पिन के लिए बाहर ले जाऊंगा और देख सकता हूं कि यह टिकट है या नहीं। – skaffman

+0

मुझे इस तकनीक को "जावा पर्सिस्टेंस विद हाइबरनेट" की धारा 8.1.3 में प्रलेखित किया गया। ध्वनि लग रहा है। एक बार फिर धन्यवाद। – skaffman

+0

धन्यवाद। मैंने किसी भी तरह से उस पुस्तक को कभी भी पढ़ने में कामयाब नहीं रहा :-) – ChssPly76

संबंधित मुद्दे