2013-06-20 47 views
1

我想執行這個查詢與審覈規定,但似乎無法按預期工作:與標準獨特的功能

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,我想要我的表的所有列,但我不想從descripcion列中重複值?

回答

0

你只是不能在普通的SQL查詢中做到這一點。我的意思是,你怎麼可能合併2行只共享一列?例如,假設這是你的表:

  • familiaId - descripcion - OTRO
  • 1)空 - 算法中 - 富
  • 2)空 - 算法中 - 巴

有沒有辦法DISTINCT可以只適用於一列,並將其餘部分放在一邊,因爲您期望這兩行只有一行。

+0

我沒有合併兩行,我只是將函數Distinct應用到一列,它工作正常,它帶來了所有獨特的記錄,但問題是隻帶一列(descripcion),我希望所有桌子的列。我不知道我是否把它誤解了。 – Blackmore

+0

所以,讓我明白,你想要的是獲得具有'descripcion'列的唯一值的所有行?如果該字段有兩行具有相同的值,則不需要其中的任何一行? – MaQy

+0

我真的很抱歉,被誤解的人是我,但是你是什麼意思將其餘的留在一邊呢?我只想「刪除」我的查詢的重複值。 – Blackmore