@JoinColumn Explicación de la anotación

1. Introducción

La anotación javax.persistence.JoinColumn marca una columna como una columna de unión para una asociación de entidad o una colección de elementos.

En este tutorial rápido, mostraremos algunos ejemplos del uso básico de @JoinColumn .

2. Ejemplo de asignación de @OneToOne

La anotación @JoinColumn combinada con una asignación @OneToOne indica que una columna determinada en la entidad propietaria se refiere a una clave principal en la entidad de referencia:

@Entity public class Office { @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "addressId") private Address address; }

El ejemplo de código anterior creará una clave externa que vinculará la entidad Office con la clave principal de la entidad Dirección . El nombre de la columna de clave externa en la entidad de Office se especifica mediante la propiedad de nombre .

3. Ejemplo de asignación de @OneToMany

Cuando usamos un mapeo @OneToMany podemos usar el parámetro mappedBy para indicar que la columna dada es propiedad de otra entidad.

@Entity public class Employee { @Id private Long id; @OneToMany(fetch = FetchType.LAZY, mappedBy = "employee") private List emails; } @Entity public class Email { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "employee_id") private Employee employee; }

En el ejemplo anterior, Correo electrónico (la entidad propietaria) tiene una columna de unión employee_id que almacena el valor de identificación y tiene una clave externa para la entidad Empleado .

4. @JoinColumns

En situaciones en las que queremos crear múltiples columnas de unión, podemos usar la anotación @JoinColumns :

@Entity public class Office { @ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ @JoinColumn(name="ADDR_ID", referencedColumnName="ID"), @JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP") }) private Address address; } 

El ejemplo anterior creará dos claves externas que apuntan a las columnas ID y ZIP en la entidad Dirección :

5. Conclusión

En este artículo, hemos aprendido a usar la anotación @JoinColumn . Hemos mostrado ejemplos de cómo crear una asociación de entidad única y una colección de elementos.

Como siempre, todo el código fuente está disponible en GitHub.