首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HIBERNATE:如何将Criteria.list()转换为"Criteria.map()“

HIBERNATE:如何将Criteria.list()转换为"Criteria.map()“
EN

Stack Overflow用户
提问于 2017-05-10 12:35:29
回答 1查看 959关注 0票数 0

我有一个从表中检索数据并在java.util.List中返回数据的方法,我需要多次调用该方法,所以我只想调用它一次,并将所有数据放到java.util.Map中,如何做到这一点?

我的方法实际上是:

代码语言:javascript
复制
private List<?> getAll(final Class objClass, final Integer parentId) {

    Session session = sessionFactory.getCurrentSession();
    Criteria criteria = session.createCriteria(objClass);
    if (parentId != null) {
        criteria.add(Restrictions.eq("tab.parent", parentId));
    }

    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    return (List<?>) criteria.list();

}

我怎样才能得到像HashMap一样的HashMap<parentId,List<?>>

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-10 17:55:48

根据堆栈溢出answer

我认为这是不可能的,因为查询总是返回一个列表:http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Criteria.html#list()或在特殊情况下返回单个元素。 没有任何方法可以返回地图。 因此,如果没有像覆盖会话这样的黑客操作来创建一个特殊的条件(其中也有map()方法),您就不能做您想做的事情。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43892694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档