如何处理以下查询获取结果列表将返回未知类型的数组列表。我是否必须创建dto并选择此对象的新内容。
SELECT c.currency, SUM(c.population)
FROM Country c
WHERE 'Europe' MEMBER OF c.continents
GROUP BY c.currency
答案 0 :(得分:1)
使用具有两个参数currency(可能是String)和populationSize(作为java.Lang.Number)的构造函数创建一个pojo,并调用populaionSize.longValue()来获取数字。
public ClassConstructor(String currency, Number populationSize)
{
this.currency = currency;
this.pop size = populationSize.longValue();
}
注意:您应该检查populationSize的大小,以便不会触及长边界。
将您的查询更改为
em.query("SELECT new " + YourClass.class.getName() + "(...,...) from ...");
并将结果检索为列表。
注意:如果您可以定义dto类型(TypedQuery),则不必在以后强制转换List。
答案 1 :(得分:1)
创建包含属性货币和种群的Class
,然后sql结果将是该类的list
。
或
创建MultiValueMap
,其中包含键作为货币和值作为总体,因此sql结果将是MultiValueMap
的列表