7

在 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[] resultwhere result[0] is e.name and result[1] is e.salary

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

如果 JPQL 做不到,HQL 能做到吗?

4

1 回答 1

7

JPA为复合选择提供了有限数量的返回类型:数组、元组和构造,而 Hibernate为选择子句提供了更多的返回类型,其中包括 Map。

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

此 HQL 查询将 a Mapfrom 别名返回到选定值。

于 2012-08-23T08:34:02.123 回答