我正在尝试从HQL
创建一个Map对象这是我的代码
我正面临例外:
java.lang.ClassCastException:java.util.ArrayList无法强制转换为java.lang.Long
List<Map<Long, Long>> test = new ArrayList<Map<Long, Long>>();
try {
String HQL_QUERY = "select new map(hp.col1, hp.col2) from HP hp where hp.col1 in (:id)";
test = getSession().createQuery(HQL_QUERY).setParameter("id", id).list();
}catch(Exception e){
}
不知道我在哪里犯错误
请帮忙
答案 0 :(得分:0)
hp.col1
或hp.col1
正在返回java.util.ArrayList
,它应为Long
。在实体类中更改它的类型。
或
更改测试类型:
List<Map<List, Long>> test = new ArrayList<Map<List, Long>>();
答案 1 :(得分:0)
HQL的工作原理如下:
List<MyObject> test = new ArrayList<>();
try {
String HQL_QUERY = "select new map(hp.col1, hp.col2) from HP hp where hp.col1 in (:id)";
test = getSession().createQuery(HQL_QUERY).setParameter("id", id).getResultlist();
}
因此您应该输入属性的类型,然后再制作一些代码将List转换为地图
答案 2 :(得分:0)
我犯了一个错误
而不是参数我需要使用参数列表。
以下是代码:
List<Map<Long, Long>> test = new ArrayList<Map<Long, Long>>();
try {
String HQL_QUERY = "select new map(hp.col1, hp.col2) from HP hp where hp.col1 in (:id)";
test = getSession().createQuery(HQL_QUERY).setParameter("id", id).list();
}catch(Exception e){
}