如何在java中向类添加命名查询结果
我有一个命名查询,它会生成一个列表列表。我试图将该数据存储到一个类(dto)中,同时我得到一个异常“[err]java.lang.ClassCastException:[Ljava.lang.Object;无法转换为java.util.List”。下面是我正在使用的代码如何在java中向类添加命名查询结果,java,hibernate,Java,Hibernate,我有一个命名查询,它会生成一个列表列表。我试图将该数据存储到一个类(dto)中,同时我得到一个异常“[err]java.lang.ClassCastException:[Ljava.lang.Object;无法转换为java.util.List”。下面是我正在使用的代码 public List<CapFutureFteForecastDto> getresults() { List<resultsDto> resultListDto = new ArrayList
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;
}
我在收到“java.lang.ClassCastException:[Ljava.lang.Object;无法转换为java.util.List”异常
List<Object> result1 = (List<Object>) result.get(i);
List result1=(List)result.get(i);
不知道我哪里做错了。你能告诉我上面的代码有什么问题吗
提前感谢。result.get(i)
是一个对象数组(不是列表),您需要这样声明:
Object[] result1 = (Object[]) result.get(i);
您还需要更改结果的类型
:
List<Object[]> result = query.list();
List result=query.List();
但通过上述更改,它给了我java.lang.ClassCastException:java.math.BigDecimal不能在monthsDataList.add((Float)(result1[index])转换为java.lang.Float;这意味着result1[index]是一个BigDecimal,而不是一个Float。您需要将其转换为BigDecimal,然后将其转换为Float(BigDecimal)result1[index]).floatValue()
Object[] result1 = (Object[]) result.get(i);
List<Object[]> result = query.list();