jpa
Mapeo uno a uno
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.
- 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