0

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
Jay
  • 471
  • 1
  • 4
  • 11

0 Answers0