我想使用Criterias执行此查询,但似乎无法按预期工作:

SELECT DISTINCT descripcion, id, familia_id, numero_departamento FROM familia WHERE familia_id IS NULL GROUP BY descripcion;


我已经试过了

public List getFamiliasPadre() {
        Criteria cri = getSession().createCriteria(Familia.class);
        cri.add(Restrictions.isNull("familia.id")).setProjection(Projections.distinct(Projections.property("descripcion")))
                .setProjection(Projections.groupProperty("descripcion"));
        return cri.list();
    }


但是它返回的结果就像我执行此查询一样

SELECT DISTINCT descripcion FROM familia WHERE familia_id IS NULL GROUP BY descripcion;


它仅返回列描述。

我的问题是,如何告诉Hibernate我想要表中的所有列,但又不想重复descripcion列中的值?

最佳答案

您只是无法在普通的SQL查询中做到这一点。我的意思是,您怎么可能合并仅共享一列的2行?例如,假设这是您的表:


familiaId-说明-otro
1)null-算法-foo
2)null-算法-酒吧


DISTINCT不可能只应用于一列,而将其余的放在一边,因为您期望这两行只有一行。

07-27 13:37