Hibernate - Distinct Query返回两列结果

时间:2014-05-07 11:33:18

标签: java sql hibernate distinct

有时候我问了一个关于如何使用Hibernate进行Distinct查询的问题。现在我已经超越了这个里程碑,我还需要另外一件事。就是这个表,

---------------------------------------
| user_id  |  user_name  | user_type  |
---------------------------------------
|    1     | mark taylor | admin      |
|    2     | bill paxton |co-ordinator|
|    1     | tony brooks | admin      |
|    3     | ali jahan   | developer  |
---------------------------------------

我想创建一个独特的查询,它返回不同的user_type以及它对应的user_id。 请注意,特定user_type的user_id相同。例如,

admin = 1
co-ordinator = 2
developer = 3

所以我期待的回报有点像ArrayList或包含两个值的排序

user_id,user_type

为获得Distinct UserType而编写的代码如下,我希望可以对其进行一些修改以获得所需的结果。

public List<String> findDistinctUserName() throws HibernateException {
    List<String> returnVal = new ArrayList<String>();

    Criteria c = this.createCriteria();
    c.setProjection(Projections.distinct(Projections.property("userType")));
    c.addOrder(Order.asc("userType"));

    List<String> userTypeList = c.list();

    for(String userType : userTypeList) {
        if(!userType.equalsIgnoreCase("")) {
            returnVal.add(userType);
        }
    }

    return returnVal;
}

提前感谢您的回答。

1 个答案:

答案 0 :(得分:0)

试试这个:
        criteria.setProjection(Projections.distinct(Projections.property(&#34; userType&#34;)),&#34; userType&#34;);

你也不必检查空白字符串,试试这个:

criteria.add(Restrictions.ne(&#34; USERTYPE&#34;&#34;&#34));