Angenommen, Artikel und Gebot sind Entitäten: ein Artikel hat viele Gebote. Sie werden in Hibernate in einem typischen Eltern/Kind-Beziehung abgebildet:Kriterien eifrige fetch-joined-Auflistung, um n + 1 zu vermeiden, wählt
<class name="Item" table="ITEM">
...
<set name="bids" inverse="true">
<key column="ITEM_ID"/>
<one-to-many class="Bid"/>
</set>
</class>
Wie kann ich n + 1 wählt vermeiden, wenn die Gebote der einzelnen Artikel zuzugreifen versuchen, nachdem diese Abfrage ausgeführt wird?
List<Item> items = session.createCriteria(Item.class)
.createAlias("bids", "b").
.add(Restrictions.gt("b.amount", 100)).
.list();
Hinweis Ich brauche eine eifrig für Gebote aber mit einer weiteren Beschränkung der Sammlung holen (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();
http://stackoverflow.com/questions/617145/hibernate-fetching-strategy-when-to-use-join-and-when-to-use-select Ich denke, es wird vorher gefragt .... –