Java 如何处理以下查询

Java 如何处理以下查询,java,jpa,Java,Jpa,如何处理下面的查询获取结果列表将返回未知类型的数组列表。我是否必须创建dto并选择此对象的“新建” SELECT c.currency, SUM(c.population) FROM Country c WHERE 'Europe' MEMBER OF c.continents GROUP BY c.currency 创建一个具有两个参数currency(可能是String)和populationSize(如java.Lang.Number)的构造函数的pojo,并调用populationSi

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

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

创建一个具有两个参数currency(可能是String)和populationSize(如java.Lang.Number)的构造函数的pojo,并调用populationSize.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),则以后不必强制转换列表。

创建包含属性currency和population的
,然后sql结果将是该类的
列表


创建
MultiValueMap
,它将包含作为货币的键和作为填充的值,因此sql结果将是
MultiValueMap

创建包含变量货币和填充的类。列表将包含tht classis有没有其他方法不创建dtomulti selection?不确定是否真的需要边界检查。最大长度为9223372036854775807,而全球人口目前约为7211186380。我想你还有一段时间;)这个数字的原因是基于db类型,它可以是int、long甚至biginteger。