Buscar..


Parámetros

Anotación Propósito
@TableGenerator Especifica el nombre del generador y el nombre de la tabla donde se puede encontrar el generador
@GeneratedValue Especifica la estrategia de generación y se refiere al nombre del generador.
@ManyToOne Especifica la relación de muchos a uno entre el empleado y el departamento
@OneToMany (mappedBy = "departamento") crea una relación bidireccional entre el empleado y el departamento simplemente refiriéndose a la anotación @ManyToOne en la entidad del empleado

Uno a muchos relación

La asignación de uno a muchos es generalmente una relación bidireccional de la asignación de muchos a uno. Tomaremos el mismo ejemplo que tomamos para la asignación de Muchos a uno.

Empleado.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    
}

Departamento.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    
}

Esta relación se representa en la base de datos de la siguiente manera. introduzca la descripción de la imagen aquí

Hay dos puntos para recordar acerca de jpa uno a muchos mapas:

  • El muchos a un lado es el lado propietario de la relación. La columna se define en ese lado.
  • El mapeo uno a muchos es el lado inverso, por lo que el elemento mappedBy debe usarse en el lado inverso.

El ejemplo completo puede ser referido aquí



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow