与Criteria的不同功能

时间:2013-06-20 21:08:43

标签: java mysql hibernate criteria

我想用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我想要我的表的所有列,但我不想重复描述列中的vaules?

1 个答案:

答案 0 :(得分:0)

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

  • familiaId - descripcion - otro
  • 1)null - algo - foo
  • 2)null - algo - bar

DISTINCT无法仅应用于一列而将其余列放在一边,因为您希望这两行只有一行。