मुझे डर है कि वह काम नहीं करेगा। <join>
. की डिज़ाइन और प्रकृति के अनुसार . जैसा कि दस्तावेज़ीकरण में बताया गया है:
जिस तरह से (मैं करता हूं) इस मुद्दे को हल करना थोड़ा अलग है। मेरे पास एक वस्तु है Language
, विकल्प में भाषाओं का संग्रह है
public virtual IList<Language> Languages {get; set;}
मैपिंग उदाहरण के लिए है <bag>
<bag name="Languages" batch-size="25"
cascade="all-delete-orphan" inverse="true" >
<key column="option_id" />
<one-to-many class="Language" />
<filter name="LanguagFilter" condition=":languageId = LanguageId" />
</bag>
ट्रिक फ़िल्टर . में है . यह कहां . का एक गतिशील संस्करण है मानचित्रण-विशेषता (18.1. NHibernate फ़िल्टर)
<filter-def name="LanguageFilter" >
<filter-param name="languageId" type="Int32" />
</filter-def>
फिर, हम वर्तमान सत्र के सभी कार्यों के लिए फ़िल्टर को चालू कर सकते हैं। प्रति अनुरोध केवल एक बार (यदि वेब ऐप), कुछ एओपी के अंदर, जहां हम भाषा आईडी जानते हैं:
var filter = session.EnableFilter("LanguageFilter");
filter.SetParameter("languageId", theCurrentLanguageIdFromUser);
और अंत में, हम जानते हैं, कि संग्रह भाषाओं में केवल एक रिकॉर्ड होता है और हम हमेशा .First()
तक पहुंच सकते हैं। . अधिक भाषाओं के साथ और अधिक परिणाम नहीं
यह भी देखें:https://stackoverflow.com/a/16625867/1679310 , https://stackoverflow.com/a/18479266/1679310