Question

J'utilise Hibernate 3.2 et j'utilise des critères pour créer une requête.J'aimerais ajouter et "ordonner par" pour une association plusieurs-à-un, mais je ne vois pas comment cela peut être fait.La requête Hibernate finirait par ressembler à ceci, je suppose :

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

J'ai essayé critères.addOrder("assnName.propertyName") mais ça ne marche pas.Je sais que cela peut être fait pour des propriétés normales.Est-ce que j'ai raté quelque chose ?

Était-ce utile?

La solution

Ok, a trouvé la réponse. J'ai essayé quelque chose que je ne pensais pas que cela fonctionnerait, mais à ma grande surprise fait. Je tentais ceci:

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

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

mais ce qui en fait travaillé était:

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

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

Je l'avais fait l'hypothèse que la méthode AddOrder () est utilisable uniquement sur les principaux critères et non sur des critères d'association.

Autres conseils

J'avais le même problème et il peut également être résolu comme ceci :

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

createAlias ​​vous permet de conserver vos critères enracinés sur votre entité d'origine (WipDiscreteJob.class dans ce cas) afin que vous puissiez continuer à construire vos critères au cas où vous en auriez besoin (par exemple, si vous avez besoin d'un deuxième ordre par propriété de votre entité d'origine) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top