JPAでは、次のような関係をモデル化する方法はありますか?
人 INT id PKEY VARCHAR名 子 INT parentId FKEY(PERSON-> id) INT nameId FKEY(PERSON-> id)
は多parentId
対1の関係でnameId
あり、1対1の関係です。それで、本質的に、parentId
そしてnameId
CHILDで複合主キーを作成しますか?
ありがとう!
名前をに変更nameId
しchildId
ます。論理的には、人とその子供との間に関係があります。それぞれの子供が人自身であるところ。現在使用しているモデルでは、個別のテーブルを作成する理由はありませんが、child
後で個別の属性を追加するとします。継承と集約を使用して関係をモデル化します。
@Entity
@Table(name="PERSON")
@Inheritance(strategy=InheritanceType.JOINED)
public class Person implements Serializable {
@Id
private Integer id;
private String name;
@OneToMany(mappedBy = "parent")
private List<Child> children;
}
@Entity
@Table(name="CHILD")
@PrimaryKeyJoinColumn(name="nameId", referencedColumnName = "id")
private class Child extends Person implements Serializable {
@ManyToOne
@JoinColumn(name = "parentId", referencedColumnName = "id")
private Person parent;
}
これはサンプルコードであり、逐語的に入力されています。自分でエラーチェックする必要があります。しかし、それは出発点です。
シナリオのエンティティを作成できます。ただし、テーブルの設計は nameId である必要があり、エンティティ クラスの作成に問題がある場合は、NetBeans IDE または Eclipse IDE でエンティティ クラスを作成するための「テーブルからのエンティティ クラス」のオプションがあります。