首页 > 解决方案 > 如何获取列表> 从 Hibernate 的结果集中?

问题描述

我正在使用休眠来获得这样的结果,

project_id - 123 , 111 , 134
计数 - 2 , 5 ,6

这是我的道层-

@Query("SELECT project_id,COUNT(*) FROM lead_master WHERE vendor_id = ?1 and source = 'share' group by project_id ")
List<Map<String,Object>> getProjectLead(userId); 

输出 - 我想要映射列表,其中 project_id 应该是键,计数应该是与该键关联的对象。所以它会像 -

123 - 2
111 - 5
134 - 6

标签: javasqldictionaryjpajpql

解决方案


您可以使用 a ResultTransformer

(List<Map<String, Object>>) entityManager.createNativeQuery(
    "SELECT project_id, COUNT(*) FROM lead_master WHERE vendor_id = :userId and source = 'share' group by project_id "
)
    .setParameter("userId", userId)
    .unwrap(org.hibernate.query.Query.class)
    .setResultTransformer(
        new ResultTransformer() {
            @Override
            public Object transformTuple(Object[] tuple, String[] aliases) { // 2.
                return new HashMap.of((String) tuple[0], tuple[1]);
            }

            @Override
            public List transformList(List collection) {
                return collection;
            }
        }
    )
    .getResultList();

推荐阅读