Hibernate中的SQLException:如果SELECT DISTINCT,则ORDER BY项必须出现在选择列表中

时间:2015-08-11 15:27:30

标签: java sql hibernate hibernate-criteria

我正在尝试使用列上的非重复计数修改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

0 个答案:

没有答案