如何处理以下查询

时间:2014-02-05 11:13:28

标签: java jpa

如何处理以下查询获取结果列表将返回未知类型的数组列表。我是否必须创建dto并选择此对象的新内容。

SELECT c.currency, SUM(c.population)
FROM Country c
WHERE 'Europe' MEMBER OF c.continents
GROUP BY c.currency

2 个答案:

答案 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的列表