从JPQL查询返回JPA实体的子集作为映射数组?

ams*_*ams 5 hibernate jpa jpql

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

SELECT NEW example.EmployeeDetails(e.name, e.salary, e.department.name) FROM Employee e
Run Code Online (Sandbox Code Playgroud)

它返回EmployeeDetails类型的对象列表

或使用投影选择,如

SELECT e.name, e.salary FROM Employee e
Run Code Online (Sandbox Code Playgroud)

返回Object[] result结果[0]是e.name,结果[1]是e.salary

有没有办法让JPA返回包含例如实体的子集的地图是有一个JPQL查询,可以返回 List<Map<String,Object>> result这样result.get(0).get("e.name")的回报e.nameresult.get(0).get('e.salary')收益e.salary

如果JPQL无法做到,那么HQL能做到吗?

JMe*_*nik 5

JPA 为复合选择提供了有限数量的返回类型:array,tuple和construct,而Hibernate 为select子句提供了更多的返回类型,包括Map.

SELECT NEW map(e.name, e.salary, e.department.name) FROM Employee e
Run Code Online (Sandbox Code Playgroud)

此HQL查询Map从别名返回选定值.