2016-10-10 39 views
-1

我正在处理spring应用程序。我在Spring框架中使用HibernateDaoSupport类连接到数据库。如何修复java.lang.ClassCastException:java.util.ArrayList同时从数据库获取值

下面是我的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。请指教。

+0

地图是一个列表...转换此列表提供给你想要的地图。 – Snickers3192

+0

@ Snickers3192 - 请您详细说明一下。你认为地图是什么意思?我创建的地图对象的类型是java.util.Map 。 – user222

+0

我该如何详细说明,你所说的Map 类型的映射实际上是一个列表,这正是我所说的。 – Snickers3192

回答

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'"); 
+0

谢谢,所以你的意思是从列表我需要手动将对象放置在HashMap user222

+0

是的,你需要转换 – Saravana

相关问题