I'm getting a ClassCastException that I don't understand. I hope someone can help with 
this, because I'd very much like to be able to use DbUtil on my project!

The stack trace:

org.apache.commons.dbutils.BasicRowProcessor$CaseInsensitiveHashMap
java.lang.ClassCastException: 
org.apache.commons.dbutils.BasicRowProcessor$CaseInsensitiveHashMap
        at com.ssmb.recom.aft.access.DbUtil.select(DbUtil.java:143)
        at com.ssmb.recom.aft.access.DbUtil.selectOneMapTrimmed(DbUtil.java:66)
        at 
com.ssmb.recom.aft.datamanager.AftRequests.nextBusinessDate(AftRequests.java:3454)
        at 
com.ssmb.recom.aft.datamanager.AftRequests.nextBusinessDateAfter(AftRequests.java:3489)
        at com.ssmb.recom.aft.datamanager.AftRequests.main(AftRequests.java:2920)

The invoking code:

        java.sql.Date sqlDate = new java.sql.Date( date.getTime() );

        String selectTradingDate = "select trading_date from trade_days where 
trading_date >= ? and banking_day = 'B'";

        Object[] params = { sqlDate };
        boolean  commit = true;

        Map h = null;
        try {
            h = (Map) DbUtil.selectOneMapTrimmed(selectTradingDate, params, commit);
        } catch (Exception e) {
            logger.error("No trade date >= " + date, e);
            throw new RuntimeException(e.getMessage());
        }
        java.util.Date tradeDate = (java.util.Date) h.get("trading_date");


My wrapper code as invoked in the code, above:

package com.ssmb.recom.aft.access;

import java.sql.*;
import java.util.*;
import org.apache.commons.dbutils.*;
import org.apache.commons.dbutils.handlers.*;
import org.apache.commons.dbutils.wrappers.*;
import org.apache.commons.beanutils.BeanUtils;

import com.ssmb.recom.datamgr.RecomDataSource;

public class DbUtil {

[...]

        /**
           select one row, set param=null to avoid parameter substitution
         */
        public static Object selectOneMapTrimmed(String query, Object[] param, boolean 
commit)
        throws Exception {

                MapHandler h = new MapHandler() {
                                public Object handle (ResultSet rs) throws 
SQLException {
                                        StringTrimmedResultSet wrapped = new 
StringTrimmedResultSet(rs);
                                        rs = 
ProxyFactory.instance().createResultSet(wrapped);
                                        Object returnVal = null;
                                        try {
                                                returnVal = super.handle(rs);
                                        } catch (SQLException e) {
                                                System.out.println(e.getMessage());
                                                throw e;
                                        }
                                        return returnVal;
                                }
                        };

                if (param == null) {
                        return select(query, h, commit);
                } else {
                        return select(query, param, h, commit);
                }
        }

[...]

}

The table being queried:

table              database   creator    created   
------------------ ---------- ---------- ----------
trade_days         db2tst08   vimdbat    06/20/2000

column             type     length scale nulls
------------------ -------- ------ ----- -----
trading_date       date     4      0     y    
trading_day        char     1      0     y    
trading_dow        smallint 2      0     y    
banking_day        char     1      0     y    
--------------------


Note:

When I execute this query using vanilla JDBC, everything works fine.

Any help appreciated,

jim

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to