@Target(value={METHOD,FIELD})
@Retention(value=RUNTIME)
public @interface ManyToOne
OneToManyエンティティではmappedBy要素を使用して、
所有側のエンティティのリレーションシップを示すエンティティのリレーションシップのフィールドまたはプロパティを指定する必要があります。
ManyToOneアノテーションは組み込みクラス(Embeddableの付いたクラス)からエンティティクラスへのリレーションシップを指定するために組み込みクラス内で使用できます。
リレーションシップが双方向である場合、被所有側のOneToManyエンティティではOneToManyアノテーションのmappedBy要素を使用して
所有側のエンティティのリレーションシップを示すリレーションシップのフィールドまたはプロパティを指定する必要があります。
組み込み属性内のリレーションシップの属性を示すには、mappedBy要素でドット(".")表記を使用する必要があります。
ドット表記で使用される各識別子の値は、それぞれの組み込みフィールドまたはプロパティの名前です。
Example 1:
@ManyToOne(optional=false)
@JoinColumn(name="CUST_ID", nullable=false, updatable=false)
public Customer getCustomer() { return customer; }
Example 2:
@Entity
public class Employee {
@Id int id;
@Embedded JobInfo jobInfo;
...
}
@Embeddable
public class JobInfo {
String jobDescription;
@ManyToOne ProgramManager pm; // Bidirectional
}
@Entity
public class ProgramManager {
@Id int id;
@OneToMany(mappedBy="jobInfo.pm")
Collection<Employee> manages;
}
| 修飾子とタイプ | 任意要素と説明 |
|---|---|
CascadeType[] |
cascade
(オプション) 関連付けの対象にカスケードする必要のある操作。
|
FetchType |
fetch
(オプション) 関連付けを遅延ロード(LAZY)するか、即座に取得(EAGER)する必要があるかどうか。
|
boolean |
optional
(オプション) 関連付けがオプションかどうか。
|
java.lang.Class |
targetEntity
(オプション) 関連付けの対象となるエンティティクラス。
|
public abstract java.lang.Class targetEntity
デフォルトでは関連付けを格納するフィールドまたはプロパティの型になります。
public abstract CascadeType[] cascade
デフォルトではすべての操作はカスケードされません。
public abstract FetchType fetch
訳注:つまりEAGERは必ず有効になり、LAZYが有効になるかは実装に依存します。
Translated by @megascus.