我正在尝试做一些在PHP和PHP中很容易做的事情。合作: SELECT COUNT(x)为numItems,AVG(y)为平均值,...... FROM Z
在PHP中,我会得到一个像[{numItems:0,average:0}]这样的简单数组,我可以这样使用:
echo "Number of Items: " . $result[0]['numItems'];
通常在JPQL中,您只查询单个对象或单个列并获取列表类型,例如List<SomeEntity>
或List<Long>
。但是在查询多个列时你会得到什么?
答案 0 :(得分:5)
您获得Object[]
(或List<Object[]>
)。来自JPA 1.0规范的 4.8.1 SELECT子句的结果类型部分:
SELECT子句的结果类型 由结果类型定义 包含在 select_expressions 中 它。当多个 select_expressions 时 用于SELECT子句, 查询的结果是类型
Object[]
以及此中的元素 结果对应于 他们的规范的顺序 SELECT子句和in类型 每个的结果类型 的 select_expressions 强>
如果要进行强类型输入,可以在SELECT子句中使用构造函数表达式。从 4.8.2 SELECT子句中的构造函数表达式:
部分可以使用构造函数 SELECT列表返回一个或多个Java 实例。指定的类不是 必须是一个实体或是 映射到数据库。该 构造函数名称必须完整 合格。
如果指定了实体类名称 在SELECT NEW子句中, 结果实体实例在 新州。
SELECT NEW com.acme.example.CustomerDetails(c.id, c.status, o.count) FROM Customer c JOIN c.orders o WHERE o.count > 100
答案 1 :(得分:0)
您还可以使用Tuple并返回一个元组列表(List<Tuple>
),您可以将其用作Map列表。