我正在尝试使用列上的非重复计数修改dao方法: 我有:
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);
我尝试添加:
crit.addOrder( Order.asc("pName") );
crit.addOrder( Order.asc("kNum") );
crit.setProjection(Projections.distinct(Projections.property("agentG")));
但是这给了我一个SQL异常:
如果SELECT DISTINCT
,ORDER BY项必须出现在选择列表中
任何人都知道错误是什么?任何帮助表示赞赏
更新
通过这样做来修复它:
crit.setProjection(Projections.projectionList()
.add(Projections.groupProperty("pName"), "pName")
.add(Projections.groupProperty("kNum"), "kNum")
.add(Projections.countDistinct("agentG"), "count"));
但收到此错误:
java.lang.ClassCastException: java.lang.String cannot be cast to test.model.AR.APRecord