Duplicar posible:
Hibernate unidirectional one to many association - why is a join table better?¿Por qué se recomienda evitar la asociación unidireccional de uno a muchos en una clave externa?
En la documentación en línea de hibernación, en la sección 7.2.3 Uno-a-muchos, se menciona que:
uno unidireccional -to-many association en una clave externa es un caso inusual, y no se recomienda. Debería en su lugar usar una tabla de unión para este tipo de asociación.
Me gustaría saber por qué? Lo único que se me ocurre es que puede crear problemas durante las eliminaciones en cascada. Por ejemplo, Persona se refiere a la dirección en una relación uno a muchos en una clave externa, y la dirección se rehusaría a ser eliminada antes que la persona.
¿Alguien puede explicar el razonamiento detrás de la recomendación?
Aquí está el enlace al contenido del documento de referencia: 7.2.3. One-to-many
tengo copia pegar el contenido real aquí:
Una asociación unidireccional uno-a-muchos en una clave externa es una inusual caso, y no es recomendado.
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <set name="addresses"> <key column="personId" not-null="true"/> <one-to-many class="Address"/> </set> </class> <class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> </class>
create table Person (personId bigint not null primary key) create table Address (addressId bigint not null primary key, personId bigint not null)
su lugar, debe utilizar una tabla de unión para este tipo de asociación.
ver http://stackoverflow.com/questions/1307203/hibernate-unidirectional-one-to-many-association-why-is-a-join-table-better –