tablas relacion one muchos mapeo mapear many ejemplo bidireccional java jpa persistence

java - one - relacion uno a muchos spring boot



Relación uno a muchos con la tabla de unión (1)

Tengo una relación de uno a muchos modelada usando la tabla de unión:

create table t1 (id int primary key, name varchar(10) /*...*/); create table t2 (id int primary key, name varchar(10) /*...*/); create table t1_t2 (t1_id int, t2_id int, primary key (t1, t2));

Se supone que las tablas modelan la relación de una t1 a muchas t2. ¿Cuál es la forma correcta de modelar estas tablas usando JPA?


La tabla típica para una T1 a muchas T2 es tener una clave externa en T2 que apunta hacia T1. La tabla T1_T2 generalmente no es necesaria.

La estructura de JPA sería entonces de Uno a Muchos, posiblemente de dos vías.

Podría haber algunos arreglos para que funcione la estructura que describes. Podrías cambiar T1_T2:

  • agregue una restricción única en T2 (para que solo se permita una T2)

¿Es eso realmente lo que quieres?

Editado : sí, es lo que quieres ;-)

Dudo que puedas encontrar muchos ejemplos en la red. No tengo una solución comprobada, pero probaría algo como esto:

En la documentación de referencia de la anotación de Hibernate , consulte "2.2.5.3.2.3. Unidireccional con la tabla de unión" para obtener la idea. Parece que:

@Entity public class Trainer { @OneToMany @JoinTable( name="TrainedMonkeys", joinColumns = @JoinColumn( name="trainer_id"), inverseJoinColumns = @JoinColumn( name="monkey_id") ) public Set<Monkey> getTrainedMonkeys() { ... }