当查询结果不是类时,JPA查询方法的返回类型是什么?

时间:2017-07-06 08:37:35

标签: java hibernate jpa jpql

我在JPA中有这个查询:

@Query("SELECT programId,COUNT(id) FROM Therapy GROUP BY programId ORDER BY COUNT(id) DESC")
List<Object> top10ProgramsOfTherapies();

它运行良好,但它返回一个对象列表,我无法从中获取数据。我应该使用什么返回类型来读取结果数据?

2 个答案:

答案 0 :(得分:3)

你也可以创建一个DTO类,例如TherapyDto,它将有一个带有2个参数的构造函数并以这种方式使用它:

@Query("SELECT new com.my.TherapyDto(programId,COUNT(id)) FROM Therapy GROUP BY programId ORDER BY COUNT(id) DESC")
List<TherapyDto> top10ProgramsOfTherapies();

答案 1 :(得分:2)

此查询将返回一个对象列表:Object[],因此您需要更改代码:

@Query("SELECT programId,COUNT(id) FROM Therapy GROUP BY programId ORDER BY COUNT(id) DESC")
List<Object[]> top10ProgramsOfTherapies();

对于列表中的每个itemitem[0]将保留programID值,item[1]将保留COUNT(id)值,您应该投射它们他们各自的类型只是object s。