サーチ…


パラメーター

注釈目的
@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