4 Stimmen

Hibernate OneToMany und ManyToOne Verwirrung! Null Liste!

Ich habe zwei Tabellen... Zum Beispiel - Unternehmen und Mitarbeiter (lassen Sie uns das einfach halten)

Unternehmen( id, name );
Mitarbeiter( id,  company_id );

Mitarbeiter.company_id ist ein Fremdschlüssel.

Mein Entitätsmodell sieht so aus...

Mitarbeiter

@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "company_id")
Unternehmen unternehmen;

Unternehmen

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "company_id")
List mitarbeiterListe = new ArrayList();

Also ja, ich möchte eine Liste von Mitarbeitern für ein Unternehmen.

Wenn ich folgendes mache...

Mitarbeiter m = new Mitarbeiter();
m.setUnternehmen(u); //u ist ein Unternehmen, das bereits in der Datenbank vorhanden ist.
DAO.insertMitarbeiter(m); //das funktioniert einwandfrei!

Wenn ich dann mein Unternehmen-Objekt bekomme, ist seine Liste leer!

Ich habe endlose verschiedene Methoden aus der Hibernate-Dokumentation ausprobiert!

Offensichtlich habe ich noch nicht die richtige ausprobiert!

Ich möchte einfach, dass die Liste für mich gefüllt wird oder eine vernünftige Alternative finden.

Hilfe wäre sehr geschätzt, danke!

6voto

sblundy Punkte 59298

Sie müssen die Beziehung bidirektional machen. Ihre ist zwei unidirektionale. Fügen Sie mappedBy = "company" zu employeeList hinzu. Das sagt Hibernate, dass die Employee-Liste einfach die Umkehrung des Verweises von Employee auf Company ist

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "company")
List employeeList = new ArrayList();

0voto

Satadru Biswas Punkte 1525

Ich denke nicht, dass du das tun solltest List employeeList = new ArrayList(); Dies sollte gemacht werden, wenn du die Seite definiert hast, die die Liste als die Besitzseite hat, was in deinem Fall der Employee und nicht das Unternehmen ist. Ich glaube, dass jedes Mal, wenn du die Unternehmensinstanz lädst, dir eine neue Instanz von employeeList geliefert wird, bin mir aber nicht sicher. Aber sicherlich gibt es keinen Grund, jedes Mal eine neue ArrayList zu instanziieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X