Hibernate标准返回结果映射

时间:2012-09-19 18:17:46

标签: hibernate

我有一个用户表,如何在Hibernate中创建一个Criteria,它返回一个以UserId为键,User对象为值的Map?

3 个答案:

答案 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的形式返回所需的数据。如果您可以使用它,那么我很乐意分享有关如何执行此操作的更多详细信息。