如果我不进行类型转换到query.list(); to(List)query.list();它给了我这些错误。
java.lang.ClassCastException:java.util.ArrayList无法强制转换为 antlr.collections.List
调用方法
category= new Category();
ArrayList data= (ArrayList) category.getCategoryInfo();
和方法是
public List getCategoryInfo(){
Session session = HibernateUtil.openSession();
String sql = "SELECT category.id as id, category.name,c.name as parent_category FROM category join category as c on c.id=category.parent_id";
SQLQuery query = session.createSQLQuery(sql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List data = (List) query.list();
return data;
}
请帮我解决这段代码的错误。
答案 0 :(得分:2)
您需要将行List data = (List) query.list();
更改为List data = query.list();
,因为query.list();
始终返回List
,因此无需显式转换。
此外,在作业部分,你再次需要在Interface List
上进行编程,但是你正在进行具体的课程 - ArrayList
。
ArrayList data= (ArrayList) category.getCategoryInfo();
需要更改为List data= category.getCategoryInfo();
在超类型接口上编程时,需要消除显式转换。
请注意,从List
方法返回的getCategoryInfo()
接口和在赋值部分写入的接口应该是相同的接口(java.util.List
或antlr.collections.List
,您可以&#t混合两者)。
自行了解List
query.list();
种类
答案 1 :(得分:1)
好像你输入了错误的List类。查看类的导入并将antlr.collections.List替换为java.util.List。