@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.