Domanda
Ho 2 tabelle:
A
s_id(key) name cli type
B
sa_id(key) s_id user pwd
Quindi in Jpa Ho:
@Entity
class A...{
@OneToMany(fetch=FetchType.EAGER)
@JoinTable( name="A_B",
joinColumns={@JoinColumn(name="a_id", table="a",unique=false)},
inverseJoinColumns={@JoinColumn(name="b_id", table="b", unique=true)} )
Collection<B> getB(){...}
}
la classe b è solo una classe di entità di base senza riferimento ad A.
Speriamo che sia chiaro. La mia domanda è: ho davvero bisogno di una tabella di join per eseguire un join così semplice? Non è possibile farlo con una semplice colonna o qualcosa del genere?
Soluzione
Non è necessario un JoinTable per questo. Se la classe B non ha riferimenti alla classe A, sarà sufficiente quanto segue
@Entity class A...{
@OneToMany(fetch=FetchType.EAGER)
Collection getB(){...} }
Nella maggior parte dei casi, tuttavia, potresti desiderare una relazione bidirezionale, nel qual caso B ha un riferimento ad A. In tal caso, dovrai cercare l'annotazione @mappedBy. menzionato da Paul.
Altri suggerimenti
No, non è necessaria una tabella di join per OneToMany. Guarda l'informazione di @mappedBy
La risposta rapida è che se hai una relazione Many-to-Many avrai bisogno di un'altra tabella. Se hai una relazione One-to-Many o Many-to-One, non lo farai.