Gli alias di Hibernate Projection funzionano anche? Potrei giurarlo, semplicemente no. Almeno, non fa quello che mi aspetterei che faccia.Criterio di ibernazione Alias di proiezione non utilizzato
Ecco il java:
return sessionFactory.getCurrentSession()
.createCriteria(PersonProgramActivity.class)
.setProjection(Projections.projectionList()
.add(Projections.alias(Projections.sum("numberOfPoints"), "number_of_points"))
.add(Projections.groupProperty("person.id")))
.setFirstResult(start)
.setFetchSize(size)
.addOrder(Order.desc("numberOfPoints"))
.list();
Ecco l'SQL che esso genera:
select
sum(this_.number_of_points) as y0_,
this_.person_id as y1_
from
PERSON_PROGRAM_ACTIVITY this_
group by
this_.person_id
order by
this_.number_of_points desc
Non sembra utilizzare l'alias a tutti. Potrei pensare che impostare l'alias significherebbe che sum(this_.number_of_points)
sarebbe aliasato come number_of_points
e non y0_
. C'è qualche trucco che mi manca?
Grazie.
+1 Ho visto questo genere di cose così, penso che con sottoquery. – Justin