2013-01-24 45 views
0

如果我运行下面的查询,我感到我不能投龙选择多个和HQL

String queryString = "select sum(cat.varaible1), sum(cat.varaible2) from Enrollment as cat where cat.created >= :startDate and cat.created <= :endDate"; 

如果我删除总和(cat.varaible2)对象的列表,然后我得到含长值的列表背部。

String queryString = "select sum(cat.varaible1) from Cat as cat where cat.created >= :startDate and cat.created <= :endDate"; 

这是怎么发生的?请解释

回答

0

基本上,JPA如何与投影查询一起工作。

当您的SELECT语句中有单个表达式时,结果列表将通过正确键入。您可以投射它,或者从一开始就使用TypedQuery

如果你在你的SELECT陈述多于一种的表达,其结果将是Object阵列的Collection。在你的情况下,每个阵列将有两个元素,都将是Long类型。

如果你想获取正确的结果类型,您可以定义一个专门的类来你的结果结合起来,并使用构造函数表达式:

select new com.example.SumSum(sum(cat.varaible1), sum(cat.varaible2)) from ...