当前位置: 首页 > 知识库问答 >
问题:

如何在java中向类中添加命名查询结果

陆飞捷
2023-03-14

我有一个命名查询,它的结果是一个列表列表。我试图将数据存储到类(dto)中,同时得到一个异常“[err]java.lang.ClassCastException:[ljava.lang.Object;不能强制转换为java.util.List”

public List<CapFutureFteForecastDto> getresults() {
    List<resultsDto> resultListDto = new ArrayList<>();
    Query query = getSession().getNamedQuery("getresults");
    List<List<Object>> result = query.list();
    List<Float> monthsDataList = new ArrayList<>();
    for(int i=0; i<result.size();i++){
        List<Object> result1 = (List<Object>) result.get(i);
        for(int index = 1; index < result1.size(); index++){
            monthsDataList.add((Float)(result1.get(index)));
        }
    resultListDto.get(i).setName((String)result1.get(0));
    resultListDto.get(i).setMonthsData(monthsDataList);
    result1.clear();
    monthsDataList.clear();
    }
    return resultListDto;
}
public class resultsDto {

    private String name;

    private List<Float> monthsData ;
    
    public List<Float> getMonthsData() {
        return monthsData;
    }

    public void setMonthsData(List<Float> monthsData) {
        this.monthsData = monthsData;
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

命名查询的结果有3行,如下所示:

[xyz,1,24.5,1.2]
[abc,2.5,3,4]
[qwe,3,4.2,5]

我在下面得到“java.lang.ClassCastException:[Ljava.lang.Object;不能强制转换为java.util.List”异常

List<Object> result1 = (List<Object>) result.get(i);

不知道我哪里做错了。你能告诉我上面的代码有什么问题吗?

共有1个答案

盖雪峰
2023-03-14

result.get(i)是一个对象数组(而不是列表),您需要以以下方式声明它:

Object[] result1 = (Object[]) result.get(i);

您还需要更改结果的类型:

List<Object[]> result = query.list();
 类似资料:
  • 问题内容: 我目前有两个选择命令如下。我想做的是将结果添加到SQL查询中,而不是代码中的变量。 是否可以将两者都放在同一SQL中并输出两个结果的总和? 问题答案: 是的。有可能的 附带说明,必须对表名定界以避免语法错误。分隔符在您使用的RDBMS上有所不同。

  • 我有如下要求。 从UI获取place子句作为字符串,任何选项都可以在Spring Boot中的place子句中添加字符串以查询mongo DB 例如:(eventType以“asdf”和age开头 在sql中,我们可以添加where子句,但不确定如何在mongoDB的springboot中做到这一点 注意:字符串是动态的,没有特定的模式。括号可以嵌套。Spring防尘套前端角度和维修 提前感谢

  • 本文向大家介绍如何在MySQL查询中向datetime字段添加日期?,包括了如何在MySQL查询中向datetime字段添加日期?的使用技巧和注意事项,需要的朋友参考一下 要将日期添加到日期时间字段,请使用DATE_ADD()函数。语法如下- 让我们首先创建一个表- 借助插入当前日期,然后使用date_add()函数添加一天。 要在表格中插入一天,以下是查询- 在select语句的帮助下显示记录。

  • 我想搜索整个内容树,但不搜索在其底部具有“请勿搜索”属性的特定树。 查询生成器API页面不引用除AND和OR之外的任何内容。 是否可以从搜索中排除路径,或者我只能显式地包括路径? 前三行是“/content和/content/path/es”。我想要“/content而不是(/content/path/es)” 我试了下两个真假都没有效果。 我找不到任何提到“不是”或“不是”的其他名称的文档可能会

  • 我使用作为sql选择。现在有了要转换为QueryDSL的本机查询。它由括号中的两个OR语句组成,后跟一个应用于两个OR部分的and和查询。 我需要以下内容: 在querydsl中,我可以编写以下示例:

  • 我使用的是Spring Data JPA 1.7.1 这里有一个例子: