从JPQL查询中返回JPA实体的子集作为映射数组? [英] Return a subset of a JPA entity as a array of maps from a JPQL query?
问题描述
在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.salary,e.department.name)FROM Employee e 选择新的地图(e。rel =noreferrer>选择子句的返回类型
此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屋!