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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top