java - 如何从Hibernate的结果集中获取List<Map<String,Object>>?

标签 java sql dictionary jpa jpql

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

项目 ID - 123、111、134
计数 - 2 , 5 ,6

这是我的 Dao 层 -

@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); 

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

123 - 2
111 - 5
134 - 6

最佳答案

您可以使用 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();

关于java - 如何从Hibernate的结果集中获取List<Map<String,Object>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59877144/

相关文章:

java - 获取数字模型微调器的选定值

java - 从数据库中删除一行有什么问题?

java - 在java标准谓词中使用 native sql

php - MYSQL 返回总结果

Java 8 LocalDate Jackson 格式

java - 在运行时创建 Quartz Scheduler 实例

枚举对象上的python dict函数

vector - 获取映射向量中最大键的向量

sql - 根据给定的声誉获取最近的特权

python - 如何屏蔽 Python 3 嵌套字典以返回仅包含某些项目的新字典?