@TargetSE(valueSE={METHODSE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) public @interface MapKey
java.util.MapSE の関連付けのマップキーを指定します。主キー以外の永続フィールドまたはプロパティがマップキーとして使用される場合、一意性制約が関連付けられていることが期待されます。
MapKey が指定されている場合、MapKeyClass アノテーションは使用されません。その逆も同様です。
Example 1:
@Entity
public class Department {
...
@OneToMany(mappedBy="department")
@MapKey // map key is primary key
public Map<Integer, Employee> getEmployees() {... }
...
}
@Entity
public class Employee {
...
@Id Integer getEmpId() { ... }
@ManyToOne
@JoinColumn(name="dept_id")
public Department getDepartment() { ... }
...
}
Example 2:
@Entity
public class Department {
...
@OneToMany(mappedBy="department")
@MapKey(name="name")
public Map<String, Employee> getEmployees() {... }
...
}
@Entity
public class Employee {
@Id public Integer getEmpId() { ... }
...
@ManyToOne
@JoinColumn(name="dept_id")
public Department getDepartment() { ... }
...
}
public abstract StringSE name
デフォルト: name 要素が指定されていない場合、関連付けられたエンティティの主キーがマップキーとして使用されます。主キーが複合主キーであり、IdClass としてマップされている場合、主キークラスのインスタンスがキーとして使用されます。
Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.