継承のために継承されたプロパティに注釈を付ける
-
03-07-2019 - |
質問
次のようにクラスAがあるとします:
class A{
int id;
int getId(){};
void setId(int id){};
}
次のクラスB:
@Entity
@Table(name="B")
class B extends A{
string name;
@Column(length=20)
string getName(){}
void setName(){}
}
Aから継承されたidフィールドに注釈を付けて、Hibernate / JPAがそれがId エンティティのために? Aのフィールドに単に@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(){}
}
所属していません StackOverflow