Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
Operating System: Windows 2000
Platform: PC
-
38963
Description
BeanListHandler or BeanHandler fail to support the java.sql.Date type when
read from database.
I just add some codes to callSetter the method callSetter of BeanProcessor as
----------------------
else if(params[0].getName().equals("java.sql.Date")){
value = (value==null)?null:new java.sql.Date
(((java.util.Date)value).getTime());
setter.invoke(target, new Object[]
----------------------
org.apache.commons.dbutils.BeanProcessor
private void callSetter(Object target, PropertyDescriptor prop, Object value)
throws SQLException {
Method setter = prop.getWriteMethod();
if (setter == null) { return; }
Class[] params = setter.getParameterTypes();
try {
// Don't call setter if the value object isn't the right type
if (this.isCompatibleType(value, params[0])) {
setter.invoke(target, new Object[] { value });
}else if(params[0].getName().equals("java.sql.Date")){
value = (value==null)?null:new java.sql.Date
(((java.util.Date)value).getTime());
setter.invoke(target, new Object[] {value}
);
}
} catch (IllegalArgumentException e)
{ throw new SQLException( "Cannot set " + prop.getName() + ": " + e.getMessage()); }catch (IllegalAccessException e)
{ throw new SQLException( "Cannot set " + prop.getName() + ": " + e.getMessage()); }catch (InvocationTargetException e)
{ throw new SQLException( "Cannot set " + prop.getName() + ": " + e.getMessage()); }}