2

我有一个用户表,如何Criteria在 Hibernate 中创建一个以 UserId 作为键并以 User 对象作为值的 Map 的创建方法?

4

3 回答 3

1

我不认为这是可能的,因为查询总是返回一个列表:http ://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Criteria.html#list () 或特殊单个元素的情况。

没有可以返回地图的方法。

因此,如果没有像覆盖 Session 来创建一个特殊的 Criteria 那样的技巧,它也有一个 map() 方法,你就不能做你想做的事。

只需返回一个列表并将其转换为地图。

于 2012-09-19T18:23:21.640 回答
0

使用谷歌番石榴

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();
                        }
                    });
于 2012-09-19T18:28:56.473 回答
0

您可以使用 HQL ,它必须 new map 以地图的形式返回所需的数据。如果您可以使用它,那么我很乐意分享有关如何执行此操作的更多详细信息。

于 2020-01-22T11:40:22.117 回答