سؤال

أنا أستخدم Hibernate JPA.

لنفترض أن لدي هذه الفصول:

AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer

هل هناك أي طريقة لجعل الفصول الخرسانية لها معرفات مستقلة؟

أنا أستخدم inheritancetype.table_per_class.

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

المحلول

من الدليل المرجعي لشروحات السبات:

2.2.4.1. جدول لكل فئة

تحتوي هذه الاستراتيجية على العديد من العيوب (esp. مع الاستعلامات والجمعيات المتعددة الأشكال) الموضحة في مواصفات JPA ، والوثائق المرجعية السباتية ، و hibernate في العمل ، والعديد من الأماكن الأخرى. يعمل السبات على العمل في معظمهم ينفذون هذه الاستراتيجية باستخدام SQL UNION استفسارات. يستخدم بشكل شائع للمستوى العلوي من التسلسل الهرمي للميراث:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Flight implements Serializable { ... } 

تدعم هذه الاستراتيجية الجمعيات الفردية شريطة أن تكون ثنائية الاتجاه. هذه الاستراتيجية لا تدعم IDENTITY استراتيجية المولد: يجب مشاركة المعرف عبر عدة جداول. وبالتالي ، عند استخدام هذه الاستراتيجية ، يجب ألا تستخدم AUTO ولا IDENTITY.

لذلك أخشى أن ما تريده غير مدعوم (وأقترح استخدامه GenerationType.TABLE).

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