2009-05-20 15 views
11

मैं मानचित्रण परिभाषाओं निम्नलिखित है:मैपिंग टेबल में अतिरिक्त कॉलम - कई मैपिंग को अवरुद्ध करता है?

<class name="Role" table="Role" optimistic-lock="version" > 

    <id name="Id" type="Int32" unsaved-value="0" > 
     <generator class="native" /> 
    </id> 

    <property name="RoleName" type="String(40)" not-null="true" /> 

    <bag name="UsersInRole" generic="true" lazy="true" cascade="all" table="UserRoles" > 
     <key column="RoleId" /> 
     <many-to-many column="UserId" class="SystemUser, Domain"/> 
    </bag> 

और

<id name="Id" type="Int32" unsaved-value="0" > 
    <generator class="native" /> 
</id> 
<property name="UserName" type="String(40)" not-null="true" unique="true" /> 

यह मानचित्रण मानचित्रण तालिका UserRoles है, जो दो स्तंभ हैं उत्पन्न करता है - भूमिका-आईडी और प्रयोक्ता-आईडी।

हालांकि, मैं उस संबंध में अतिरिक्त विशेषताओं को जोड़ना चाहता हूं - यानी संबंधों की स्थिति को परिभाषित करने वाले कुछ enum मानों के साथ-साथ प्रभावी शुरुआत & समाप्ति तिथियां।

क्या यह निबर्ननेट में करना संभव है या मुझे अतिरिक्त कक्षा जोड़ने की आवश्यकता है और संबंध एम-टू-एम को 2 रिश्तों में बदलना है [उपयोगकर्ता] 1-से-m [user_role] m-to-1 [भूमिका] ?

उत्तर

9

आपको एक अतिरिक्त कक्षा जोड़ने की आवश्यकता है, उदा। अतिरिक्त गुण रखने के लिए कोड में UserRole।

जब मैपिंग की बात आती है तो इसे एक वर्ग के रूप में मैप किया जा सकता है जैसा आपने बताया था। लेकिन मैं यह भी लगता है कि यह भूमिका का मिलान में एक समग्र-तत्व के रूप में मैप किया जा सकता:

<set name="UsersInRole" lazy="true" table="UserRoles" > 
    <key column="RoleId" /> 
    <composite-element class="UserRole"> 
    <many-to-one name="User" column="UserId" not-null="true"/> 
    <propery name="RelationState" not-null="true"/> 
    <propery name="StartDate" not-null="true"/> 
    <propery name="EndDate" not-null="true"/> 
    </composite-element> 
</set> 

सभी गुण, नहीं-शून्य होना चाहिए, क्योंकि वे UserRoles तालिका का प्राथमिक कुंजी का हिस्सा बन रहे हैं। अधिक जानकारी के लिए देखें:

+0

THX। मैं इसे आज़मा दूंगा – Greg

+0

लिंक मर चुके हैं ... – Anttu

0

अतिरिक्त कक्षा जोड़ें।

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