Eifrige Abruf-verknüpfte Auflistung, um n + 1 Auswahlen zu vermeiden

Angenommen, Artikel und Gebot sind Entitäten: Ein Artikel hat viele Gebote. Sie sind in abgebildetÜberwintern in einer typischen Eltern-Kind-Beziehung:

<class name="Item" table="ITEM">
  ...
  <set name="bids" inverse="true">
    <key column="ITEM_ID"/>
    <one-to-many class="Bid"/>
  </set>
</class>

Wie vermeide ich n + 1 Auswahlen, wenn ich versuche, auf die Gebote der einzelnen Artikel zuzugreifen, nachdem diese Abfrage ausgeführt wurde?

List<Item> items = session.createCriteria(Item.class)
                        .createAlias("bids", "b").
                        .add(Restrictions.gt("b.amount", 100)).
                        .list();

Hinweis Ich brauche eineeifrig holen für gebote abermit einer weiteren Einschränkung der Sammlung (b.amount> 100)

Ich habe Folgendes erfolglos versucht:

List<Item> items = session.createCriteria(Item.class)
                        .setFetchMode("bids", FetchMode.JOIN).
                        .createAlias("bids", "b").
                        .add(Restrictions.gt("b.amount", 100)).
                        .list();                        

List<Item> items = session.createCriteria(Item.class)
                        .createCriteria("bids")
                        .add(Restrictions.gt("amount", 100)).
                        .list();                        

Antworten auf die Frage(4)

Ihre Antwort auf die Frage