首页 > 解决方案 > 如何显示列表?

问题描述

我有一个列表,我想通过 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);"       

在我的控制器中,我尝试按 groupe 显示列表组中的每个元素

List<String> tauxDeChargeAssemblage1 = EquilibrageFrequentielService.tauxDeChargeAssemlage(base1);
    for (String tauxDeChargeAssemblage : tauxDeChargeAssemblage1)
    {
        System.out.println(tauxDeChargeAssemblage);
    }

我收到以下错误:“java.lang.Double 无法转换为 java.lang.String” 我该怎么做才能显示我的列表?先感谢您。

标签: arraysstringjakarta-eecontroller

解决方案


您需要使用投影。如此方便的方法是创建一个 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;
}

或者,也许您只想要一个groupes 列表(假设它是一个字符串),在这种情况下,只需删除 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);" 

推荐阅读