我有一个列表,我想通过system.out.println()打印此列表
我在存储库中的查询是这样的:“
@Query("select groupe, AVG(tauxCharge) from EquilibrageFrequentiel E where
tauxCharge is not null and tauxCharge != '0'"
+ " and base=:base group by groupe")
public List<String> tauxDeChargeParLigne(@Param("base")Long base);"
在我的控制器中,我尝试按组显示列表组中的每个元素
List<String> tauxDeChargeAssemblage1 = EquilibrageFrequentielService.tauxDeChargeAssemlage(base1);
for (String tauxDeChargeAssemblage : tauxDeChargeAssemblage1)
{
System.out.println(tauxDeChargeAssemblage);
}
我得到这些错误:“ java.lang.Double无法转换为java.lang.String” 我该怎么做才能显示我的清单?预先谢谢你。
答案 0 :(得分:0)
您需要使用投影。如此方便的方法是创建一个DTO来描述查询返回的数据(String
(?),Integer/Long
的元组):
@Query("select new org.example.MyDTO(groupe, AVG(tauxCharge))"
+ " from EquilibrageFrequentiel E"
+ " where tauxCharge is not null and tauxCharge != '0'"
+ " and base=:base group by groupe")
public List<MyDTO> tauxDeChargeParLigne(@Param("base")Long base);
DTO类似于:
package org.example;
@AllArgsConstructor
@Getter
public class MyDTO {
private String groupe; // or whatever is ther data type of your groupe
private Long average;
}
或者也许您只想要一个groupe
列表(假设它是一个字符串),在这种情况下,只需删除AVG部分,例如:
@Query("select groupe
+ " from EquilibrageFrequentiel"
+ " E where tauxCharge is not null and tauxCharge != '0'"
+ " and base=:base group by groupe")
public List<String> tauxDeChargeParLigne(@Param("base")Long base);"