A
2 つのエンティティとを例に取りましょうB
。それぞれA
に多数の が関連付けられている場合がありますB
。それぞれB
が正確に 1 つの に関連付けられていA
ます。この Hibernate との関係を次のように表します。
@Entity
public class A {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "AId")
private Long id;
@Column(name = "AName", nullable = false, unique = true)
private String name;
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "A_B", joinColumns = { @JoinColumn(name = "AId") }, inverseJoinColumns = { @JoinColumn(name = "BId") })
private Set<B> bs = new HashSet<B>();
}
@Entity
public class B {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "BId")
private Long id;
@Column(name = "BName")
private String name;
@ManyToOne(optional = false)
@JoinColumn(name = "BA")
private A a;
}
このマッピングから DB を生成すると、次のようになります。
- 表
A
。 A_B
2 つの列を持つ結合テーブル:AId
とBId
.AId
主キーにBId
属します。また、からへのOneToMany
関連付けがあるため(つまり、1 つの に多数の が関連付けられていて、1 つは 1 つの にのみ関連付けられている)、一意の制約が に追加されます。A
B
A
B
B
A
BId
- tableのキー参照列である which を
B
含む列を含むテーブル。BA
foreign
AId
A
についてはjoin table
、
OneToMany
Hibernate が関係をこのようにマッピングするのはなぜですか?- 主キーを 1 つの列 (
BId
) で構成されるように定義するだけで、同じ規則が適用されます。 - マッピングがこのように行われる理由はありますか?
- このようなマッピングの利点/欠点は何ですか?
私は正確に私が使用してHibernate 4.1.6.Final
います。