I am trying to modify a dao method with a distinct count on a column: I had:
Criteria crit = statelessSession.createCriteria(APRecord.class, "apr");
crit.createAlias("mAId", "mId", Criteria.INNER_JOIN);
crit.addOrder( Order.asc("pName") );
crit.addOrder( Order.asc("kNum") );
return crit.scroll(ScrollMode.FORWARD_ONLY);
I tried adding:
crit.addOrder( Order.asc("pName") );
crit.addOrder( Order.asc("kNum") );
crit.setProjection(Projections.distinct(Projections.property("agentG")));
but this gives me a SQL Exception:
ORDER BY items must appear in the select list if SELECT DISTINCT
Anyone know what the error is? Any help appreciated
Update:
fixed it by doing this:
crit.setProjection(Projections.projectionList()
.add(Projections.groupProperty("pName"), "pName")
.add(Projections.groupProperty("kNum"), "kNum")
.add(Projections.countDistinct("agentG"), "count"));
but getting this error:
java.lang.ClassCastException: java.lang.String cannot be cast to test.model.AR.APRecord