Digamos que Item y Bid son entidades: un Item tiene muchas ofertas. Ellos son mapeados en Hibernate en una típica relación de padre/hijo:Criterios de recolección fetch-joined ansiosos para evitar n + 1 selecciona
<class name="Item" table="ITEM">
...
<set name="bids" inverse="true">
<key column="ITEM_ID"/>
<one-to-many class="Bid"/>
</set>
</class>
¿Cómo puedo evitar el n + 1 le permite elegir cuando se trata de acceder a las ofertas de cada artículo después de ejecutar esta consulta?
List<Item> items = session.createCriteria(Item.class)
.createAlias("bids", "b").
.add(Restrictions.gt("b.amount", 100)).
.list();
Nota necesito un ansiosos ir a buscar a licitación, pero con una restricción adicional a la colección (b.amount> 100)
He intentado, sin éxito, la siguiente:
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 Creo que se lo preguntan antes ... –