Frage

Dies könnte eine super einfache Antwort, da ich bin sicher, dass es nicht ungewöhnlich ist. Ich sehe einige ähnliche Fragen, aber die nichts scheint mein Problem zu beschreiben.

ich habe zwei Objekte: ein Auto und Person. Sie sind in einer Viele-zu-viele-Beziehung, das heißt ein Auto kann von mehreren Personen gehört, und eine Person, mehrere Autos besitzen kann. Car hat einen träge initialisiert Satz von Drivers:

@ManyToMany(targetEntity=Person.class, fetch=FetchType.LAZY)
private Set<Person> people;

Ich möchte alle blauen Autos mit den Eigentümern unter 25 Jahren finden:

Criteria foo = persistenceManager.createCriteria(Car.class, "myCarAlias");
Criteria bar = foo.createCriteria("drivers", "myDriverAlias");
//add restrictions on foo and bar for blue and age, respectively
baz = foo.list();

Mein Problem ist, wenn ich durch die Liste und Anruf getDrivers() an jedem Wagen laufen, es die Sammlung initialisiert und bekommt all das Auto Fahrer. Ich denke, die .list() ich ran nicht die Ergebnisse für jedes Auto eingestellt ist.

ich die Ergebnisse wieder erwarte ich, wenn ich manuell die SQL laufen Hibernate Erzeugungs ist, so dass ich ziemlich sicher die Kriterien bin, ist nicht das Problem.

kann ich verstehen, warum dies geschieht, aber ich bin nicht sicher, wie es zu umgehen, ohne über jedes Auto laufen und eine Abfrage für Treiber auf jedem laufen. Ich mag tun, dass, wenn möglich, vermeiden und einen Rat schätzen würde.

Vielen Dank im Voraus!

scroll top