从休眠中返回地图

时间:2016-06-29 12:55:13

标签: java hibernate hql

我正在尝试从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){

}

不知道我在哪里犯错误

请帮忙

3 个答案:

答案 0 :(得分:0)

hp.col1hp.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){

}