جدول لكل تسلسل هرمي للفئة الخرسانية في السبات

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

  •  03-07-2019
  •  | 
  •  

سؤال

لدي تعيين السبات التالي، والذي يجب تعيينه باستخدام الجدول لكل تسلسل هرمي للفئة المحددة:

<hibernate-mapping package='dao'>
    <meta attribute='class-description'></meta>
    <class name='PropertyDAO'>
        <id name='id' column='id_property'>
            <generator class='assigned'/>
        </id>
        <property name='address' column='address' type='string'/>
        <union-subclass name='HouseDAO' table='house'>
            <property name='noOfRooms' column='noOfRooms'/>
            <property name='totalArea' column='totalArea'/>
            <property name='price' column='price'/>
        </union-subclass>
        <union-subclass name='LandDAO' table='land'>
            <property name='area' column='area'/>
            <property name='unitPrice' column='unitPrice'/>
        </union-subclass>
    </class>
</hibernate-mapping>

مما يعني أنه في قاعدة البيانات لدي جدولين فقط:

  • منزل (id_property(PK)، العنوان، عدد الغرف، المساحة الإجمالية، السعر)
  • أرض (id_property(PK)، العنوان، المساحة، سعر الوحدة)

بقدر ما فهمت، في هذه الحالة يجب إنشاء المعرفات بشكل صريح قبل استدعاء .save()، لذا سؤالي هو:كيف يمكنني إنشاء إستراتيجية لإنشاء المعرفات تلقائيًا، بحيث تشكل المعرفات من الفئة المحددة مجالًا مستمرًا عند الانضمام إليها.

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

المحلول 3

الحل هو إنشاء جدول آخر يخزن المعرف التالي؛يجب تعديل هذه القيمة في كل مرة يريد فيها المستخدم إدراج كيان جديد.بهذه الطريقة، المجال مستمر

نصائح أخرى

IMHO نموذجك في قاعدة البيانات خاطئ لأن لديك معلومات زائدة عن الحاجة عبر جداول متعددة مرتبطة.

يعد الجدول لكل فئة محددة نموذجًا للوراثة والذي يعطي مشكلات في وقت التشغيل حيث يمكن أن يكون لديك موقف حيث يقوم أحدهم بتحديث عنوان الأرض ولكن ليس عنوان المنزل بينما يكونان متماثلين (دلاليًا).ايو دبليو:أسقط هذا النموذج وقدم جدولًا لكل فئة فرعية، بحيث يكون لديك جدول أساسي للخاصية يحتوي على المعرف والعنوان وجدولين منفصلين مع PK وهو FK إلى pk لقاعدة الخاصية، أحدهما منزل مع الحقول الخاصة بالمنزل، و الآخر هو الأرض مع حقول الأرض المحددة.

سيعطيك ذلك أقل عدد من المشاكل لأنها طريقة تحويل الميراث بين أنواع الكيانات إلى جداول علائقية (راجع كتب Nijssen/Halpin حول NIAM/ORM)

لقد استخدمت ما يلي مع فئة فرعية انضمت

<key column="id"/>

من المفترض أن يؤدي ذلك إلى جعل الفئات الفرعية تستخدم المعرفات الموجودة في جدول الخصائص نظرًا لأن ذلك يعتمد عليها.(السوبر) يشير العمود إلى العمود الموجود في الفئة الفرعية والذي يعد مرجعًا أجنبيًا للسوبر.

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