Pregunta

Estoy usando Hibernate 3.2, y el uso de criterios para crear una consulta.Me gustaría añadir y "orden" para muchos-a-uno de la asociación, pero no veo la manera de que se puede hacer.La consulta de Hibernate acabaría pareciéndose a esto, supongo:

select t1.a, t1.b, t1.c, t2.dd, t2.ee
from t1
inner join t2 on t1.a = t2.aa
order by t2.dd   <-- need to add this

He tratado de criterios.addOrder("assnName.propertyName") pero no funciona.Sé que se puede hacer para propiedades normales.Me estoy perdiendo algo?

¿Fue útil?

Solución

Ok, encontrado la respuesta. Probé algo que no pensé que iba a funcionar, pero para mi sorpresa lo hizo. Yo estaba tratando de esto:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class);

criteria.addOrder(Order.asc("assnName.propertyName"))

pero lo que en realidad fue trabajado:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class);
Criteria assnCrit = criteria.createCriteria("assnName");

assnCrit.addOrder(Order.asc("propertyName"));

I había hecho la suposición de que el método addOrder () fue sólo utilizable en los criterios principales y no en cualquier criterio de asociación.

Otros consejos

Yo tenía el mismo problema y también puede ser resuelto, como este:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class)
  .createAlias("assnName","a")
  .addOrder(Order.asc("a.propertyName"));

createAlias te permite mantener tus criterios arraigados en su entidad original (WipDiscreteJob.class en este caso, para que usted pueda continuar con la construcción de los criterios de seguridad en caso de que sea necesario (por ejemplo, si usted necesita un segundo orden por la propiedad original de la entidad).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top