2011-12-02 50 views
3

選擇不同的實體我有4個列的表:ID,column_a和column_b通過特定的列

我最初的查詢是basicaly

Session session = initialize my hibernate session; 
Criteria criteria = session.createCriteria(MytableBean.class); 
// add some constraints 
return criteria.list() 

,並返回像一些結果:

id | column_a | column_b | 
1 | A   | 1  | 
2 | A   | 1  | 
3 | A   | 2  | 
4 | B   | 3  | 
5 | B   | 3  | 

但我不想讓同一對夫婦(column_a,column_b)多次,即使我需要在我的數據庫中多次使用它。

所以,我在尋找返回類似結果的查詢:

id | column_a | column_b | 
    | A   | 1  | 
    | A   | 2  | 
    | B   | 3  | 

在SQL我會用SELECT DISTINCT column_a, column_b FROM ....

但我不能使用SQL(和要麼不盡可能使用hql)。

回答

2

以下將做到這一點。 Object []的列表將被返回。

Criteria criteria = session.createCriteria(MytableBean.class); 
    ProjectionList projList = Projections.projectionList(); 
    projList.add(Projections.property("column_a")); 
    projList.add(Projections.property("column_b")); 
    projList.add(Projections.groupProperty("column_a")); 
    projList.add(Projections.groupProperty("column_b")); 

    criteria.setProjection(projList); 
    return criteria.list(); 
+0

如果column_a和column_b是外鍵,它也可以工作嗎? –

+0

它應該工作得很好。 –

+0

所以我可能做錯了。我是否需要創建用於連接外部表的「子」標準或使用MyTableBean beans中的ForeignKey名稱是否正確? –