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.
@Doce y cincuenta y nueve de la noche Especifica la relación uno a uno entre el empleado y el escritorio, aquí el empleado es el propietario de la relación
mappedBy Este elemento se proporciona en el reverso de la relación. Esto permite la relación bidireccional.

Relación uno a uno entre empleado y escritorio.

Considere la posibilidad de una relación bidireccional entre el empleado y el escritorio.

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;

    @OneToOne
    @JoinColumn(name = "iddesk")
    private Desk desk;

    // getters and setters    
}

Escritorio.java

@Entity
public class Desk {

    @TableGenerator(table = "id_gen", name = "desk_gen", pkColumnName = "gen_name", valueColumnName = "gen_value", allocationSize = 1)
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "desk_gen")
    private int iddesk;
    private int number;
    private String location;
    @OneToOne(mappedBy = "desk")
    private Employee employee;

    // getters and setters    
}

Código de prueba

/* Create EntityManagerFactory */
    EntityManagerFactory emf = Persistence
            .createEntityManagerFactory("JPAExamples");

    /* Create EntityManager */
    EntityManager em = emf.createEntityManager();

    Employee employee;

    employee = new Employee();
    employee.setFirstname("pranil");
    employee.setLastname("gilda");
    employee.setEmail("sdfsdf");

    Desk desk = em.find(Desk.class, 1); // retrieves desk from database
    employee.setDesk(desk);

    em.persist(employee);

    desk = em.find(Desk.class, 1); // retrieves desk from database
    desk.setEmployee(employee);
    System.out.println(desk.getEmployee());

El diagrama de la base de datos se muestra a continuación. introduzca la descripción de la imagen aquí

  • La anotación @JoinColumn continúa en el mapeo de la entidad que se asigna a la tabla que contiene la combinación colulmn.The propietario de la relación. En nuestro caso, la tabla Empleado tiene la columna de unión, por lo que @JoinColumn está en el campo Escritorio de la entidad Empleado.
  • El elemento mappedBy debe especificarse en la asociación @OneToOne en la entidad que invierte el lado de la relación. es decir, la entidad que no proporciona una columna de unión en el aspecto de la base de datos. En nuestro caso, Desk es la entidad inversa.

El ejemplo completo se puede encontrar aquí



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