我正在申请春季申请。我在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
。请指教。
答案 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'");