Venkata Krishna opened SPR-15391 and commented
Oracle JDBC Connection property fixedString has some significant behavior only when we use PraparedStatement.setObject() is invoked with String value & with UNKNOWN SQL Type.
But this will never happens because of the following code in setValue() method of StatementCreatorUtils.java.
else if (sqlType == SqlTypeValue.TYPE_UNKNOWN) {
if (isStringValue(inValue.getClass())) {
ps.setString(paramIndex, inValue.toString());
}
else if (isDateValue(inValue.getClass())) {
ps.setTimestamp(paramIndex, new java.sql.Timestamp(((java.util.Date) inValue).getTime()));
}
else if (inValue instanceof Calendar) {
Calendar cal = (Calendar) inValue;
ps.setTimestamp(paramIndex, new java.sql.Timestamp(cal.getTime().getTime()), cal);
}
else {
// Fall back to generic setObject call without SQL type specified.
ps.setObject(paramIndex, inValue);
}
}
I think we need to fix this with some special datatype or with special else block code.
Issue Links: - #17488 Regression in handling of String passed as Types.OTHER to JdbcTemplate - #13215 Can't insert into nvarchar2 using SimpleJdbcInsert whereas it works with SimpleJdbcTemplate
Comment From: spring-projects-issues
Juergen Hoeller commented
TYPE_UNKNOWN
is a Spring-specific value, indicating no type specified. I suppose the Oracle driver actually reacts to Types.OTHER
there?