jpa
Relacja jeden do wielu
Szukaj…
Parametry
| Adnotacja | Cel, powód |
|---|---|
| @TableGenerator | Określa nazwę generatora i nazwę tabeli, w której można znaleźć generator |
| @GeneratedValue | Określa strategię generowania i odnosi się do nazwy generatora |
| @ManyToOne | Określa stosunek jeden do jednego między pracownikiem a działem |
| @OneToMany (mappedBy = "departament") | tworzy dwukierunkową relację między pracownikiem a działem, po prostu odwołując się do adnotacji @ManyToOne w jednostce pracownika |
Relacja jeden do wielu
Mapowanie jeden do wielu jest zazwyczaj po prostu dwukierunkowym związkiem mapowania jeden do wielu. Weźmiemy ten sam przykład, który wybraliśmy dla mapowania Wiele do jednego.
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
}
Ten związek jest reprezentowany w bazie danych, jak poniżej.
Są dwa punkty do zapamiętania na temat mapowania jpa jeden na wiele:
- Wiele do jednej strony jest właścicielem relacji. Kolumna jest zdefiniowana po tej stronie.
- Mapowanie jeden do wielu jest stroną odwrotną, więc element mapowanyBy musi być użyty po stronie odwrotnej.
Pełny przykład można znaleźć tutaj
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow