/ / कैसे हाइबरनेट में 2 एक-से-एक संघों को साफ करने के लिए कैसे करें - जावा, हाइबरनेट

Hibernate - जावा, हाइबरनेट में 2 एक-से-एक संगठनों को साफ-सफाई कैसे करें

मैं वर्तमान में हाइबरनेट का उपयोग करके दो सरल एक-से-एक मैपिंग बनाने की कोशिश कर रहा हूं, लेकिन किसी भी तरह से यह काम नहीं करता है जैसा कि मैं चाहता हूं।

मेरे प्राथमिक वर्ग को MailAccount कहा जाता है और इसकी मैपिंग इस तरह दिखाई देती है:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated 26.04.2011 14:49:15 by Hibernate Tools 3.3.0.GA -->
<hibernate-mapping package="test.account">
<class name="MailAccount" table="MAILACCOUNTS" dynamic-update="true">

<id name="id" column="MAIL_ACCOUNT_ID">
<generator class="native" />
</id>

<one-to-one name="incomingServer" cascade="all" />

<one-to-one name="outgoingServer" cascade="all" />

</class>
</hibernate-mapping>

सर्वर मैपिंग फ़ाइल इस तरह दिखती है:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 02.05.2011 12:32:52 by Hibernate Tools 3.3.0.GA -->
<hibernate-mapping>
<class name="test.server.MailServer" table="MAILSERVER">

<id name="id" type="long" access="field">
<column name="MAIL_SERVER_ID" />
<generator class="native" />
</id>

<one-to-one name="mailAccount" class="test.account.MailAccount" foreign-key="MAIL_SERVER_ID"></one-to-one>

</class>
</hibernate-mapping>

अब, यदि मैं हाइबरनेट टेबल बनाने देता हूं, तो मुझे बहुत कुछ मिलता है जो मुझे चाहिए: एक टेबल "MailAccount" कॉलम "MAIL_ACCOUNT_ID" के साथ और एक अन्य तालिका "MailServer" भी आईडी के लिए एक कॉलम के साथ।

अगर मैं फोन करता हूँ session.save(mailAccountInstance);, हाइबरनेट सही ढंग से डेटा को तालिकाओं में सहेजता है।

परंतु एक बार जब मैं एक MailAccount उदाहरण में डेटा लोड करने का प्रयास करता हूं, तो हाइबरनेट केवल "इनकमिंग सेवर" प्रॉपर्टी को एक नए MailAccount इंस्टेंस में लोड करता है और आउटगोइंगसेवर प्रॉपर्टी खाली होती है।

मुझे यह भी समझ में नहीं आता है कि हाइबरनेट टेबल "मेलस्वर" के बाद से दोनों तालिकाओं को एक साथ कैसे जोड़ता है, मेलएक्वांट की आईडी को बचाने के लिए प्रत्येक सर्वर एक विदेशी कुंजी के रूप में है।

मैं इसे कैसे ठीक करूं?

अग्रिम में धन्यवाद!

पुनश्च: मैं हाइबरनेट के लिए बहुत नया हूं, इसलिए "मुझे गलत गलतियों के लिए ज्यादा नहीं मारा गया" :-)

उत्तर:

जवाब के लिए 2 № 1

मैं सुझाव देता हूं कि एक नज़र डालें एसोसिएशन मैपिंग अध्याय हाइबरनेट संदर्भ मैनुअल में। के लिए द्विदिश एक से एक मानचित्रण, यह एक का उपयोग करने का सुझाव दिया है <one-to-one> एक छोर पर और <many-to-one unique="true"> दूसरे सिरे पर।