Este team redactor ha pasado mucho tiempo investigando para dar resolución a tu búsqueda, te ofrecemos la resolución por esto esperamos serte de mucha apoyo.
Solución:
Digamos que tienes una entidad A
que tiene un @ManyToOne
asociación o entidad B
@JoinColumn definirá la clave externa de la tabla de destino (p. ej. B_ID
) mientras se utiliza la tabla de entidades de destino (p. ej. B
).
@Entity
public class A
private Long id;
@ManyToOne
@JoinColumn(name="B_ID")
private B b;
@JoinTable usará una tabla separada para mantener la relación entre A
y B
.
@Entity
public class A
private Long id;
@ManyToOne
@JoinTable(
name = "A_B",
joinColumns = @JoinColumn(name = "B_ID"),
inverseJoinColumns = @JoinColumn(name = "A_ID")
)
private B b;
Esta vez tampoco A
ni B
contener ninguna clave externa, porque hay una tabla separada (por ejemplo, A_B
) para mantener la asociación entre A
y B
.
@JoinTable almacena la identificación de ambas tablas en una tabla separada, mientras que @JoinColumn almacena la identificación de la otra tabla en una nueva columna.
@JoinTable: este es el tipo predeterminado. Use esto cuando necesite una base de datos más normalizada. es decir. para reducir la redundancia.
@JoinColumn: use esto para un mejor rendimiento, ya que no necesita unirse a una tabla adicional.
una diferencia importante: @JoinColumn
siempre depende del contexto en que se use:
- Si la unión es para un mapeo OneToOne o ManyToOne utilizando un key estrategia de mapeo, el extranjero key columna está en la tabla de
entidad fuente o integrable.- Si la unión es para un mapeo OneToMany unidireccional usando un key estrategia de mapeo, el extranjero key está en la tabla de la entidad de destino.
- Si la unión es para un mapeo ManyToMany o para un mapeo OneToOne o ManyToOne/OneToMany bidireccional usando una tabla de unión, el
extranjero key está en una tabla de unión.- Si la unión es para una colección de elementos, el foráneo key está en una mesa de colección.
Nos puedes añadir valor a nuestro contenido informacional tributando tu experiencia en las ilustraciones.