【发布时间】:2014-05-07 11:33:17
【问题描述】:
以前我问过关于如何使用 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;
}
提前感谢您的回答。
【问题讨论】:
-
感谢@Jay 的回复...但是该值将如何返回?目前我正在做类似 List
的事情,那将如何改变?!?谢谢 -
Hibernate 会返回一个对象数组列表。即,列表
-
你能告诉我们给你
ClassCastException的代码吗?正如 Priyesh 所说,您将获得Object[]的列表,您必须将其解包,然后单独投射每个Object。在编写代码时使用调试器可能会有所帮助,以检查返回的所有内容的类型。 -
Integer userId = (Integer) userType[0]; String type = (String) userType[1]; System.out.println( "The user id is " + userId + " and the user type is " + type );
标签: java sql hibernate distinct