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?
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.