Eventuali duplicati:
Hibernate unidirectional one to many association - why is a join table better?Perché è consigliabile evitare l'associazione unidirezionale uno a molti su una chiave esterna?
nella documentazione in linea di Hibernate, ai sensi della sezione 7.2.3 Uno-a-molti, è detto, che:
uno unidirezionale -a-many association su una chiave esterna è un caso insolito, e non è raccomandato. Devi usare invece di usare una tabella di join per questo tipo di associazione .
Mi piacerebbe sapere perché? L'unica cosa che mi viene in mente è che può creare problemi durante le eliminazioni a cascata. Ad esempio, la persona si riferisce all'indirizzo su una relazione uno a molti su una chiave esterna e l'indirizzo si rifiuta di essere eliminato prima della persona.
Qualcuno può spiegare il razionale dietro la raccomandazione?
Ecco il link per il contenuto del documento di riferimento: 7.2.3. One-to-many
ho copia incollato il contenuto effettivo qui:
Un unidirezionale associazione uno-a-molti su una chiave esterna è un insolito caso, e non è raccomandato.
<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)
si dovrebbe invece usare una tabella di unirsi per questo tipo di associazione.
vedere http://stackoverflow.com/questions/1307203/hibernate-unidirectional-one-to-many-association-why-is-a-join-table-better –