سؤال

على افتراض أن لدي فئة "أ" على النحو التالي:

class A{
   int id;
   int getId(){};
   void setId(int id){};
}

والفئة ب على النحو التالي:

@Entity
@Table(name="B")
class B extends A{
   string name;

   @Column(length=20)
   string getName(){}
   void setName(){}
}

كيف يمكنني التعليق على حقل الهوية الموروثة من A بحيث يعرف Hibernate/JPA أنه معرف الكيان؟ حاولت ببساطة وضع ID في الحقل في A لكن هذا لم ينجح. حاولت صنع كيان أيضًا وهذا لم ينجح أيضًا.

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

المحلول

على افتراض أنك لا تريد أن تمثل الفئة الفائقة نفسها كيانًا ، يمكنك استخدامه @MappedSuperclass على الطبقة الفائقة لجعل الفئات الفرعية ترث خصائص الثبات:

@MappedSuperclass
class A{
   int id;
   @Id
   int getId(){};
   void setId(int id){};
}

النظر في جعل الخلاصة الفائقة. نرى هذا القسم من المستند لمزيد من التفاصيل.

نصائح أخرى

هناك عدد من الاستراتيجيات التي يمكنك استخدامها. هذا شيء يمكنك تجربته:

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class A{
   int id;

   @Id @GeneratedValue
   int getId(){};
   void setId(int id){};
}


@Entity
@Table(name="B")
class B extends A{
   string name;

   @Column(length=20)
   string getName(){}
   void setName(){}
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top