Java/Hibernate JPA: inheriTancetype.table_per_class و IDS
-
01-10-2019 - |
سؤال
أنا أستخدم 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
).