【问题标题】:HIBERNATE: How to convert a Criteria.list() to a "Criteria.map()"休眠:如何将 Criteria.list() 转换为“Criteria.map()”
【发布时间】:2017-10-09 02:45:47
【问题描述】:

我有一个从表中检索一些数据并将其返回到 java.util.List 的方法,我需要多次调用该方法,所以我想只调用一次并将所有数据放入 @ 987654322@,怎么办?

我的方法其实是这样的:

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&lt;parentId,List&lt;?&gt;&gt;

谢谢

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    根据stackoverflow answer

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

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

    因此,无需像覆盖 Session 那样创建特殊的 hack Criteria 也有一个 map() 方法,你不能做你想做的事。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多