Domanda

Sto usando Hibernate 3.2, e secondo criteri di costruire una query. Mi piacerebbe aggiungere e "ORDER BY" per un'associazione molti-a-uno, ma non vedo come ciò possa essere fatto. La query Hibernate finirebbe simile a questo, credo:

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

Ho provato criteria.addOrder ( "assnName.propertyName"), ma non funziona. So che può essere fatto per le proprietà normali. Mi sto perdendo qualcosa?

È stato utile?

Soluzione

Ok, trovato la risposta. Ho provato qualcosa che non pensavo avrebbe funzionato, ma con mia sorpresa fatto. Stavo cercando questo:

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

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

ma quello che effettivamente lavorate era:

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

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

avevo fatto l'ipotesi che il metodo AddOrder () era utilizzabile solo sui criteri principali e non su alcun criterio di associazione.

Altri suggerimenti

ho avuto lo stesso problema e può anche essere risolto in questo modo:

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

CREATEALIAS consente di mantenere i criteri radicato sul soggetto originale (WipDiscreteJob.class in questo caso) in modo da poter continuare a costruire i tuoi criteri in caso di necessità (ad esempio, se avete bisogno di un secondo ordine dalla proprietà da voi soggetto originale).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top