<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
 <bean id="dataSource"
  class="org.springframework.jdbc.datasource.DriverManagerDataSource"
  abstract="false" singleton="true" lazy-init="default"
  autowire="default" dependency-check="default">
 <property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property>
 <property name="url"><value>jdbc:oracle:thin:@10.240.144.11:1521:XYMES</value></property>
 <property name="username"><value>reel</value></property>
 <property name="password"><value>reel</value></property>
 </bean>
</beans>
------------------------------------
package com.kim.spring;
import java.util.List;import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;public class Test
{ /**
  * @param args
  */
 public void aMethod()throws Exception
 { 
  ApplicationContext ac=new FileSystemXmlApplicationContext("F:\\kim\\kimjob\\springkim\\src\\applicationContext.xml");
  DataSource dataSource=(DataSource)ac.getBean("dataSource");
  JdbcTemplate jt=new JdbcTemplate(dataSource);
  List l= jt.queryForList("select * from tableA");
  A a=(A)list.get(0);  //exception here
 }
 public static void main(String[] args)
 {
  // TODO Auto-generated method stub
  Test t=new Test();
  try
  {
   t.aMethod();
  } catch (Exception e)
  {
   // TODO: handle exception
   e.printStackTrace();
  }
 }
}
---------------------------------在方法 aMethod()中的 A a=(A)list.get(0); 会抛出异常:
 java.lang.ClassCastException: org.apache.commons.collections.map.ListOrderedMap cannot be cast to A请问大家这是什么原因?

解决方案 »

  1.   

    刚才笔误,纠正一下List list= jt.queryForList("select * from tableA");  
    A a=(A)list.get(0); //exception here
      

  2.   

    List list= jt.queryForList("select * from tableA",A);   
    在后面加个类型就行
      

  3.   


     抛出异常:
     org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 3这是什么原因啊?
      

  4.   

    需要OR mapping 配置文件吗?
      

  5.   

     SPring 的JDBC操作不是这样的,QUeryForList返回类型是List<Map<String, Object>>这个List里边MAP就是就是每一行的数据而map中对应的string就是数据库中的列名,object就是值。
      

  6.   

    给你贴点代码或许你就明白了。List<InterAcct> iats = jdbcTemplate.query(sql,
    new ParameterizedRowMapper<InterAcct>() {
    @Override
    public InterAcct mapRow(ResultSet rs, int index)
    throws SQLException { InterAcct iat = new InterAcct();
    iat.setAcct_No(rs.getString("Agmt_Id"));
    iat.setAcct_Name(rs.getString("Agmt_Name"));
    iat.setCurrency_Cd(rs.getString("Currency_Cd"));
    iat.setBal(rs.getDouble("Bal"));
    iat.setProd_Id(rs.getString("Prod_Id"));
    iat.setSubject_Cd(rs.getString("Subject_Cd"));
    iat.setOpen_Dt(rs.getString("Open_Dt"));
    iat.setAgmt_Stat(rs.getString("Agmt_Stat")); return iat;
    }
    }); return iats;
      

  7.   

    去看下那个queryforlist 源代码    我以前这么用过 是可以的 版本是2.5.6
      

  8.   

    不好意思 我用的方法不跟你一样 我中间有个rowmapper的。
      

  9.   

    你用的JDBC, 返回的还是数据库的东西,不是hibernate之类的ORM,会帮你包装转换的
      

  10.   


    这个是spring2.5之前的吧...........