@TargetSE(valueSE={METHODSE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) public @interface OneToMany
ジェネリクスを使用して要素型を指定するコレクションが定義されている場合、関連するターゲットエンティティ型を指定する必要はありません。それ以外の場合、ターゲットエンティティクラスを指定する必要があります。関連が双方向の場合、 mappedBy 要素を使用して、関連の所有者であるエンティティの関連フィールドまたはプロパティを指定する必要があります。
OneToMany アノテーションは、エンティティクラスに含まれる埋め込み可能なクラス内で使用して、エンティティのコレクションとの関連を指定できます。関連が双方向の場合、 mappedBy 要素を使用して、関連の所有者であるエンティティの関連フィールドまたはプロパティを指定する必要があります。コレクションが java.util.Map の場合、cascade エレメントと orphanRemoval エレメントがマップ値に適用されます。
Example 1: One-to-Many association using generics
// In Customer class:
@OneToMany(cascade=ALL, mappedBy="customer")
public Set<Order> getOrders() { return orders; }
In Order class:
@ManyToOne
@JoinColumn(name="CUST_ID", nullable=false)
public Customer getCustomer() { return customer; }
Example 2: One-to-Many association without using generics
// In Customer class:
@OneToMany(targetEntity=com.acme.Order.class, cascade=ALL,
mappedBy="customer")
public Set getOrders() { return orders; }
// In Order class:
@ManyToOne
@JoinColumn(name="CUST_ID", nullable=false)
public Customer getCustomer() { return customer; }
Example 3: Unidirectional One-to-Many association using a foreign key mapping
// In Customer class:
@OneToMany(orphanRemoval=true)
@JoinColumn(name="CUST_ID") // join column is in table for Order
public Set<Order> getOrders() {return orders;}
| 修飾子と型 | オプションの要素と説明 |
|---|---|
CascadeType[] | cascade(オプション)関連付けのターゲットにカスケードする必要がある操作。 |
FetchType | fetch(オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。 |
StringSE | mappedBy 関連を所有するフィールド。 |
boolean | orphanRemoval(オプション)リレーションシップから削除されたエンティティに削除操作を適用し、それらのエンティティに削除操作をカスケードするかどうか。 |
ClassSE | targetEntity(オプション)関連付けのターゲットであるエンティティクラス。 |
public abstract ClassSE targetEntity
ジェネリクスを使用して定義されている場合、デフォルトはコレクションのパラメーター化された型です。
public abstract CascadeType[] cascade
デフォルトでは、カスケードされる操作はありません。
ターゲットコレクションが java.util.MapSE の場合、cascade 要素はマップ値に適用されます。
public abstract FetchType fetch
public abstract StringSE mappedBy
Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.