2013-06-20 5 views
1

Я хочу, чтобы выполнить этот запрос с КРИТЕРИИ, но это, кажется, не работает, как ожидалось:Distinct функция с критериями

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; 

Он возвращает только колонку descripcion.

Мой вопрос: как я могу сказать Hibernate, что мне нужны все столбцы таблицы, но я не хочу повторять vaules из колонки descripcion?

ответ

0

Вы просто не можете сделать это в простых SQL-запросах. Я имею в виду, как вы можете объединить 2 строки, которые разделяют только один столбец? Например, представьте, что это ваш стол:

  • familiaId - Descripcion - Otro
  • 1) нулевой - алго - Foo
  • 2) нулевой - алго - бар

Там нет никакого способа DISTINCT может применяться только к одному столбцу и оставлять остальное в стороне, потому что вы ожидаете иметь только одну строку для этих двух строк.

+0

Я не объединяю две строки, я просто применяю функцию Distinct к одному столбцу, он отлично работает, он приносит все записи, которые являются уникальными, но проблема в том, что только приносит один столбец (descripcion) и i Want all столбцы таблицы. Я не знаю, понял ли я это неправильно. – Blackmore

+0

Итак, позвольте мне понять, что вы хотите получить все строки, которые имеют уникальное значение для столбца 'descripcion'? Если есть два ряда с одинаковым значением для этого поля, вы не хотите их использовать? – MaQy

+0

Мне очень жаль, меня неправильно поняли, но что вы хотите оставить в стороне? Я только хочу «удалить» повторяющиеся значения для моего запроса. – Blackmore