Frage
Ich habe 2 Tische:
A
s_id(key) name cli type
B
sa_id(key) s_id user pwd
Also habe ich in JPA:
@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(){...}
}
Klasse B ist nur eine grundlegende Entitätsklasse ohne Bezug auf A.
Hoffentlich ist das klar. Meine Frage lautet: brauche ich wirklich eine Join -Tabelle, um einen so einfachen Join zu machen? Kann dies nicht mit einem einfachen Joincolumn oder so geschehen?
Lösung
Sie brauchen dafür kein gemeinsames. Wenn die Klasse B keinen Hinweis auf die Klasse A hat, reicht Folgendes aus
@Entity class A...{
@OneToMany(fetch=FetchType.EAGER)
Collection getB(){...} }
In den meisten Fällen möchten Sie jedoch eine bidirektionale Beziehung in diesem Fall B haben einen Verweis auf A. In diesem Fall müssen Sie die Annotation von @Mappedby nachschlagen. erwähnt von Paul.
Andere Tipps
Nein, Sie brauchen keinen Join -Tisch für die Onetomany. Schauen Sie sich die @MappedBy -Annoatation an
Die schnelle Antwort lautet, dass Sie einen anderen Tisch benötigen, wenn Sie eine viel-zu-Viele-Beziehung haben. Wenn Sie eine Eins-zu-Viele-oder-viel-zu-Eins-Beziehung haben, werden Sie nicht.