السبات ثنائية الاتجاه كثيرة للعديد من النصائح رسم الخرائط!

StackOverflow https://stackoverflow.com/questions/2739207

  •  02-10-2019
  •  | 
  •  

سؤال

لقد تأثرت إذا كان أي شخص قادرًا على مساعدتي. أحاول معرفة ما يجب على Google (أو أي أفكار أخرى !!) أساسًا ، لدي الكثير من ثنائية الاتجاه للعديد من الخرائط بين كيان المستخدم وكيان النادي (عبر جدول انضمام يسمى Userclubs) أريد الآن تضمين عمود في ملحقات المستخدم التي تمثل الدور بحيث عندما أتصل بـ user.getClubs () يمكنني أيضًا تحديد مستوى الوصول الذي لديهم. هل هناك طريقة ذكية للقيام بذلك باستخدام السبات أو هل أحتاج إلى إعادة التفكير في بنية قاعدة البيانات؟ شكرا لك على أي مساعدة (أو فقط لقراءة هذا الحد !!)

user.hbm.xml يشبه بعض الشيء

<set name="clubs" table="userClubs" cascade="save-update">
         <key column="user_ID"/>
         <many-to-many column="activity_ID"
           class="com.ActivityGB.client.domain.Activity"/>
</set>

Activity.hbm.xml الجزء

<set name="members" inverse="true" table="userClubs" cascade="save-update">
        <key column="activity_ID"/>
        <many-to-many column="user_ID"
            class="com.ActivityGB.client.domain.User"/>
</set>

يحتوي جدول بيانات المستخدم الحالي على معرف الحقول | user_id | Activity_id

أود أن أدرج في معرف هناك | user_id | Activity_id | وظيفة

وتكون قادرة على الوصول إلى الدور على كلا الجانبين ...

هل كانت مفيدة؟

المحلول

أسهل طريقة هي إنشاء كيان من طاولة الانضمام.

يمكنك استخدام المفتاحين الأجنبيين للنادي وكيانات المستخدمين كمعرف (باستخدامu003Ccomposite-id> ) ، لكنني أنصح بإضافة عمود معرّف تقني ، وأعين فقط قيودًا فريدة على المفاتيح الأجنبية (وإلا ، فإن الشلال عند حفظ النادي أو المستخدم لن يعمل. مزيد من المعلومات هنا: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-compositid).

إذا قمت بتسمية Contity Userclub الجديدة ، فستحتاج إلى شخص واحد من مستخدم إلى آخر من المستخدم ومن النادي إلى النادي إلى المستخدم ، والعديد إلى واحد من Userclub إلى Club ومن ملحق المستخدم إلى المستخدم.

سيكون لديك بعض عمليات إعادة النشر التي يمكنك القيام بها على رمز Java ولكن لن تضطر إلى تغيير DB (بصرف النظر عن إضافة أعمدة المعرف والأدوار).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top