从JPQL查询中返回JPA实体的子集作为映射数组? [英] Return a subset of a JPA entity as a array of maps from a JPQL query?

查看:484
本文介绍了从JPQL查询中返回JPA实体的子集作为映射数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在JPQL中,可以使用构造函数表达式来请求实体的子集,如

  SELECT NEW示例。 EmployeeDetails(e.name,e.salary,e.department.name)FROM Employee e 

返回EmployeeDetails类型的对象列表

或者使用投影选择例如

  SELECT e.name,e.salary FROM Employee e 

返回 Object [] result where result [0] is e.name and result [1] is e.salary

有没有办法让JPA返回一个包含实体子集的Map,例如,是否有一个JPQL查询可以返回 List< Map< String,Object>>结果使得 result.get(0).get(e.name) return e.name result.get(0).get('e.salary') return e.salary



如果JPQL无法做到这一点,HQL可以做到吗?

解决方案

JPA为复合选择返回类型>:数组,元组和构造,而Hibernate提供了更多的

 选择新的地图(e。rel =noreferrer>选择子句的返回类型,其中包括地图。名称,e.salary,e.department.name)FROM Employee e 

此HQL查询返回一个 Map 从别名到选定的值。


In JPQL it is possible to ask for a subset of an entity using a constructor expression such as

SELECT NEW example.EmployeeDetails(e.name, e.salary, e.department.name) FROM Employee e

which returns a list of objects of type EmployeeDetails

or using a projection select such as

SELECT e.name, e.salary FROM Employee e

which returns an Object[] result where result[0] is e.name and result[1] is e.salary

is there a way to get JPA to return a Map which contains a subset of the entity for example is there a JPQL query that can return List<Map<String,Object>> result such that result.get(0).get("e.name") return e.name and result.get(0).get('e.salary') return e.salary

If JPQL can't do it does can HQL do it?

解决方案

JPA provides limited amount of return types for compound selection: array, tuple and construct, while Hibernate provides much more return types for select clause, which includes Map.

SELECT NEW map(e.name, e.salary, e.department.name) FROM Employee e

This HQL query returns a Map from aliases to selected values.

这篇关于从JPQL查询中返回JPA实体的子集作为映射数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆