我有一个用户表,如何在Hibernate中创建一个Criteria
,它返回一个以UserId为键,User对象为值的Map?
答案 0 :(得分:1)
我不认为这是可能的,因为查询总是返回一个List:http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Criteria.html#list() 或者在特殊情况下是单个元素。
没有方法可以返回地图。
因此,如果没有像覆盖Session那样的黑客来创建一个特殊的Criteria,它也有map()方法你就无法做到你想做的事。
只需返回一个列表并将其转换为地图。
答案 1 :(得分:0)
使用Google番石榴
ImmutableMap<Long, User> immutableMap = Maps.<Long, User>uniqueIndex(hibernateSession.createCriteria(User.class).list(),
new Function<User, Long>() {
public Long apply(User input) {
return input.getId();
}
});
答案 2 :(得分:0)
您可以使用HQL,它具有
new map
以map的形式返回所需的数据。如果您可以使用它,那么我很乐意分享有关如何执行此操作的更多详细信息。