"select count(*) from table" return BigDecimal value in Oracle
--------------------------------------------------------------
Key: IBATIS-620
URL: https://issues.apache.org/jira/browse/IBATIS-620
Project: iBatis for Java
Issue Type: Bug
Affects Versions: 3.0.0
Reporter: Yuan Tao
User SqlSession.selectOne for the sql "select count(*) from table" defined in
mapping file should return Integer, but return BigDecimal in Oracle.
The bug seems happen int DefaultResultSetHandler.mapResults method. There are
codes below:
...
for (int i = 1, n = rsmd.getColumnCount(); i <= n; i++) {
boolean useLabel = mappedStatement.getConfiguration().isUseColumnLabel();
String columnLabel = (useLabel ? rsmd.getColumnLabel(i) :
rsmd.getColumnName(i));
columnLabel = columnLabel.toUpperCase();
String propName = metaResultObject.findProperty(columnLabel);
colSet.add(columnLabel);
if (propName != null) {
propSet.add(propName);
Class javaType = metaResultObject.getSetterType(propName);
// This line will return Object if the resultObject is
PlatformTypeHolder
TypeHandler typeHandler = typeHandlerRegistry.getTypeHandler(javaType);
ResultMapping resultMapping = new ResultMapping.Builder(configuration,
propName, columnLabel, typeHandler)
.javaType(javaType).build();
autoMappings.put(propName, resultMapping);
}
}
...
Maybe this bug can fixed by adding the code below after "Class javaType =
metaResultObject.getSetterType(propName);"
if (javaType.isAssignableFrom(rm.getType()))
javaType = rm.getType();
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]