Ich habe eine Frage, die ich denke, sollte ziemlich häufig sein, aber ich kann keine Antwort finden.Hibernate @ManyToMany bidirektionale eifrig holen
Ich habe 2 Objekte: Gruppe und Benutzer. Meine Klassen in etwa so aussehen:
class Group
{
@ManyToMany(fetch = FetchType.EAGER)
List<User> users;
}
class User
{
@ManyToMany(fetch = FetchType.EAGER)
List<Group> groups;
}
Nun, wenn ich versuche, einen Benutzer aus der Datenbank zu erhalten bringen sie alle ihre Gruppen und alle Gruppen bringen alle Benutzer und so weiter. Schließlich bekomme ich eine stackoverflow-Ausnahme.
Wie kann ich dieses Problem lösen und habe weiterhin meine bidirektionale Zuordnung und die Möglichkeit, die Objekte in den Listen zu erreichen?
ja. das Gleiche passiert. Ich kann verstehen, dass es Sinn macht b/c Hibernate muss alle Listenobjekte für jede Liste bringen und es ist eine Endlosschleife. Meine Frage ist, ob es möglich ist, die Tiefe zu begrenzen, die Hibernate bringt (etwas wie fetch_max_depth, aber für viele-zu-viele). – refaelos
@Rafa Eigentlich würde ich erwarten, dass Hibernate den Zyklus erkennt und das passende tut (aber ich habe mir nicht die Zeit genommen, das zu testen). Auf der anderen Seite kann ich nicht sagen, dass das Aufladen beider Seiten eines Viele-zu-Viele-Looks eine gute Idee ist. –