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?