2011-04-06 9 views
7

Tengo dificultades para crear una consulta de criterios de Hibernate que utiliza setFetchMode (... SELECT) y pone una restricción en los registros secundarios devueltos. Si utilizo CreteAlias ​​como se recomienda, produce una unión interna, lo que hace que la paginación sea casi imposible.Al usar setFetchMode en criterios Hiberate cómo establecer una restricción en la tabla oneToMany

El código sería como: -

Criteria criteria = this.getSession().createCriteria(Mother.class); 
criteria.addOrder(Order.asc("title")) 
// .createAlias("children", "childrenAlias") had to remove 
.add(Restrictions.eq("childAge", "5")) // how do I reference childAge? 
.setMaxResults(details.getMaxRows()) 
.setFirstResult(details.getStart()) 
.setFetchMode("children", FetchMode.SELECT); 

Respuesta

8

Dios sabe dónde estaba cuando me envió esto. Pensé que publicaría la respuesta para ordenar.

El código que faltaba era la siguiente: -

Criterion child = Restrictions.eq("childAlias.childName", "Albert"); 
criteria.createAlias("children", "childAlias", CriteriaSpecification.INNER_JOIN); 
criteria.add(child); 
+0

desde '' CriteriaSpecification.INNER_JOIN'' está en desuso, se debe utilizar [ '' JoinType.INNER_JOIN''] (http: // docs.jboss.org/hibernate/orm/current/javadocs/org/hibernate/sql/JoinType.html#INNER_JOIN) en su lugar – user1686407

Cuestiones relacionadas