Question

J'ai 2 tables:

A
s_id(key) name cli type

B
sa_id(key) s_id user pwd

Donc, dans Jpa J'ai:

@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 est juste une classe d'entité de base sans référence à A.

Espérons que cela soit clair. Ma question est la suivante: ai-je vraiment besoin d'une table de jointure pour faire une jointure aussi simple? Cela ne peut-il pas être fait avec un simple joincolumn ou quelque chose comme ça?

Était-ce utile?

La solution

Vous n'avez pas besoin d'un JoinTable pour cela. Si la classe B n’a pas de référence à la classe A, alors ce qui suit suffira

@Entity class A...{ 
@OneToMany(fetch=FetchType.EAGER)     
Collection getB(){...} }

Dans la plupart des cas, vous souhaiterez peut-être une relation bidirectionnelle, auquel cas B aura une référence à A. Dans ce cas, vous devrez rechercher l'annotation @mappedBy. mentionné par Paul.

Autres conseils

Non, vous n'avez pas besoin d'une table de jointure pour OneToMany. Regardez le @mappedBy annoatation

La réponse rapide est que si vous avez une relation plusieurs à plusieurs, vous aurez besoin d'une autre table. Si vous avez une relation un à plusieurs ou plusieurs à un, vous ne le ferez pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top