如何从DB获取值时修复java.lang.ClassCastException:java.util.ArrayList

时间:2016-10-10 03:15:41

标签: java spring classcastexception

我正在申请春季申请。我在spring框架中使用HibernateDaoSupport类连接到数据库。

以下是我的java代码:

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
//imports..
public class MyTableDAOHibernateImpl extends HibernateDaoSupport implements MyTableDAO{
public String getDBValues() throws DataLayerException {
        String value = "";
        Map<String, String> map = null;
        try {
            map = (HashMap<String,String>)getHibernateTemplate()
                    .find("select mt.fname,mt.lname from MyTable as mt where aid= '29983L"' ");
            System.out.println("MAP elements : " + map);
            if (map != null && !map.isEmpty()) {
                Iterator it = map.entrySet().iterator();
                while (it.hasNext()) {
                    Map.Entry pair = (Map.Entry) it.next();
                    value = (String) pair.getValue(); 
                    System.out.println("name" + value);
                }
            }
        } catch (final DataAccessException dae) {
            throw new DataLayerException(dae);
        }
        return value;
    }

以上代码抛出以下异常:

Encountered serious error building result : java.lang.ClassCastException: java.util.ArrayListjava.lang.ClassCastException: java.util.ArrayList

请建议,在我的代码中,getHibernateTemplate()返回Map<String,String>。根据我的要求,我需要使用HashMap将数据库返回的值存储在键值对中。无法追踪ClassCastException。请指教。

1 个答案:

答案 0 :(得分:3)

getHibernateTemplate().find(...)会返回List<?>个对象Map<K,V>

您必须在代码中更改为列表

List<Object[]> rs = ( List<Object[]> ) getHibernateTemplate().find("select mt.fname,mt.lname from MyTable as mt where aid= '29983L'");