サーチ…
パラメーター
注釈 | 目的 |
---|---|
@TableGenerator | ジェネレータが見つかるジェネレータ名とテーブル名を指定します。 |
@GeneratedValue | 生成戦略を指定し、ジェネレータの名前を参照します。 |
@ManyToOne | 従業員と部門の間に多対1の関係を指定します。 |
@OneToMany(mappedBy = "department") | Employeeエンティティの@ManyToOneアノテーションを単に参照することによって、EmployeeとDepartmentの間の双方向関係を作成します。 |
1対多の関係
1対多のマッピングは、一般に、多対1マッピングの単なる双方向関係です。多対1マッピングのために取った同じ例を取り上げます。
Employee.java
@Entity
public class Employee {
@TableGenerator(name = "employee_gen", table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", allocationSize = 100)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "employee_gen")
private int idemployee;
private String firstname;
private String lastname;
private String email;
@ManyToOne
@JoinColumn(name = "iddepartment")
private Department department;
// getters and setters
}
Department.java
@Entity
public class Department {
@TableGenerator(table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", name = "department_gen", allocationSize = 1)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "department_gen")
private int iddepartment;
private String name;
@OneToMany(mappedBy = "department")
private List<Employee> employees;
// getters and setters
}
jpaの1対多マッピングについて覚えておくべき2つのポイントがあります。
- 多くの場合、一方の側が関係の所有側です。列はその側で定義されます。
- 1対多のマッピングは逆側の側であるため、mappedBy要素を逆側で使用する必要があります。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow