Hibernate ManyToManyマッピングに関する質問があります。私は2つのクラスAとBを持っており、それらの間のマッピングは、Hibernateによって解決多対多マッピングです:多対多のジャンクションテーブルを別の関係で使用する
@Entity
@Table(name="A")
public class A {
@Id
@GeneratedValue
private Long id;
@ManyToMany
@JoinTable(name="A_B", [email protected](name="A_id"), [email protected](name="B_id"))
private Set Bs;
}
@Entity
@Table(name="B")
public class B {
@Id
@GeneratedValue
private Long id;
@ManyToMany(mappedBy="b")
private Set As;
}
ユーザーとグループへの外部キーは「A_ID」と「B_ID」です。 Join TableはA_Bと呼ばれます。
今、私はCを追加したいと思います。A_BはCとの関係を持っていて、A_B_Cと呼ぶことができるCとA_Bとの多対多の関係を作りたいと思います。
@Entity
@Table(name="C")
public class C {
@Id
@GeneratedValue
private Long id;
@ManyToMany
@JoinTable(name="A_B", [email protected](name="C_id"), [email protected](name="?????"))
private Set A_Bs; // Don't have any UserGroup entity !
}
EDIT:だから私はAとBとA_Bのための2 @OneToMany関係で、A_Bエンティティを作成します。
質問:主キーについてのA_Bの最適なソリューションは何ですか?埋め込まれた主キーまたは生成されたID重複したくない(user_id、group_id):/固有の制約だけで十分ですか?
A_B <> Cの関係についてはどうですか?エンティティA_B_Cは必要ありません.ManyToManyで十分でしょう...
私は助けていただきありがとうございます。
ありがとうございます!
に
Group
へ@ManyToMany
の関連付けを必要としますN Group-UserGroup)。あなたは他の関係のために使用されている結合テーブルを退治することはできません –UserGroup(今はA_B)エンティティを追加すると、Cと@ManyToMany関係を作ることができますが、A_Bでは生成IDまたはEmbeddedIdが必要ですか? – Guillaume
あなたはどんなエンティティでもIDが必要です。これは、User.idとGroup.id(IdClass)またはEmbeddedId(2つのフィールド)から形成されたIdであるか、それらのオブジェクトのためだけに別のIDを必要とするかはあなた次第です。 –