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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top