サーチ…


備考

エンティティ間の関係の基礎

外部キーは、一意のキー(通常は主キー)を別のテーブルで参照する1つ以上の列にすることができます。

外部キーとそれが参照するプライマリ親キーの番号と型は同じでなければなりません。

外部キーは、あるテーブルの列から別のテーブルの列への関係を表します。

エンティティリレーションシップにおける多重度

エンティティリレーションシップにおける多重度

乗法は次のタイプのものです:

  • 1対1 :各エンティティインスタンスは、別のエンティティの1つのインスタンスに関連しています。
  • 一対多 :エンティティインスタンスは、他のエンティティの複数のインスタンスに関連付けることができます。
  • 多対1 :エンティティの複数のインスタンスは、他のエンティティの単一のインスタンスに関連付けることができます。
  • 多対多 :エンティティインスタンスは、相互に複数のインスタンスに関連付けることができます。

1対1マッピング

1対1のマッピングは、1対1の多重度を持つ別のエンティティへの単一値の関連付けを定義します。この関係マッピングは、対応する永続プロパティまたはフィールドの@OneToOneアノテーションを使用します。

例: VehicleおよびParkingPlaceエンティティ。

1対多マッピング

エンティティインスタンスは、他のエンティティの複数のインスタンスに関連付けることができます。

1 @OneToManyリレーションシップは、対応する永続プロパティまたはフィールドで@OneToManyアノテーションを使用します。

mappedBy要素は、対応するエンティティのManyToOneによって注釈された属性を参照するために必要です。

 @OneToMany(mappedBy="attribute")

1対多の関連付けでは、エンティティのコレクションをマップする必要があります。

多対1マッピング

多対1のマッピングは、ソースエンティティ(ターゲットエンティティを参照する属性)の属性に@ManyToOneアノテーションを付けることによって定義されます。

@JoinColumn(name="FK_name")注釈は、関係のforeingキーをディスクに書き出します。

多対多マッピング

エンティティインスタンスは、互いに複数のインスタンスに関連付けることができます。

多対多リレーションシップは、対応する永続プロパティまたはフィールドで@ManyToManyアノテーションを使用します。

3つ目のテーブルを使用して2つのエンティティタイプ(ジョインテーブル)を関連付ける必要があります。

@JoinTable注釈の例

JPAで多対多の関係をマッピングする場合、 @JoinTableアノテーションを使用して、 @JoinTableキーの結合に使用されるテーブルのコンフィグレーションを提供できます。

@Entity
public class EntityA {
   @Id
   @Column(name="id")
   private long id;
   [...]
   @ManyToMany
   @JoinTable(name="table_join_A_B",
              joinColumns=@JoinColumn(name="id_A"), referencedColumnName="id"
              inverseJoinColumns=@JoinColumn(name="id_B", referencedColumnName="id"))
   private List<EntityB> entitiesB;
   [...]
}

@Entity
public class EntityB {
   @Id
   @Column(name="id")
   private long id;
   [...]
}

エンティティAにより実現EntityBに多対多の関係を有するから成る。この例では、 entitiesBフィールドを、我々は結合テーブルのテーブル名があることを指定する@JoinTableアノテーションを使用table_join_A_B列によって構成される、 id_A及びid_B 、それぞれEntityAのテーブルとEntityBのテーブルのカラムidを参照する外部キー。 (id_A,id_B)は、 table_join_A_Bテーブルの複合プライマリキーにtable_join_A_Bます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow