在JPQL中,可以使用构造函数表达式(例如
)请求实体的子集SELECT NEW example.EmployeeDetails(e.name, e.salary, e.department.name) FROM Employee e
返回EmployeeDetails类型的对象列表
或使用投影选择,例如
SELECT e.name, e.salary FROM Employee e
返回Object[] result
,其中result [0]是e.name,result [1]是e.salary
有没有办法让JPA返回一个包含实体子集的Map,例如是否有一个可以返回List<Map<String,Object>> result
的JPQL查询,以便result.get(0).get("e.name")
返回e.name
和result.get(0).get('e.salary')
返回e.salary
如果JPQL无法做到,那么HQL能做到吗?
答案 0 :(得分:5)
JPA提供了有限数量的return types for compound selection:array,tuple和construct,而Hibernate提供了更多return types for select clause,其中包括Map。
SELECT NEW map(e.name, e.salary, e.department.name) FROM Employee e
此HQL查询从别名返回Map
到选定值。