我想使用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不可能只应用于一列,而将其余的放在一边,因为您期望这两行只有一行。