Closed
Description
John Ahlroos opened SPR-16495 and commented
When running the following code:
// Inserts a row and returns the generated id
public String performInsert()
{
SimpleJdbcInsert insert = new SimpleJdbcInsert(dataSource)
.withTableName(LOG_TABLE_NAME)
.withSchemaName(SCHEMA_NAME)
.usingGeneratedKeyColumns(ID_COLUMN)
.usingColumns(VALUE_COLUMN);
KeyHolder keyHolder = insert.executeAndReturnKeyHolder(Collections.singletonMap(VALUE_COLUMN, json));
String id = (String) keyHolder.getKeys().get(ID_COLUMN);
return id;
}
This code will work with Spring JDBC 4.3.6.RELEASE but if I change it to 4.3.7.RELEASE or above it will fail in:
Caused by: java.lang.NullPointerException
at org.springframework.jdbc.core.metadata.OracleTableMetaDataProvider.lookupDefaultSchema(OracleTableMetaDataProvider.java:79)
at org.springframework.jdbc.core.metadata.OracleTableMetaDataProvider.<init>(OracleTableMetaDataProvider.java:68)
at org.springframework.jdbc.core.metadata.TableMetaDataProviderFactory$1.processMetaData(TableMetaDataProviderFactory.java:74)
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:336)
at org.springframework.jdbc.core.metadata.TableMetaDataProviderFactory.createMetaDataProvider(TableMetaDataProviderFactory.java:64)
at org.springframework.jdbc.core.metadata.TableMetaDataContext.processMetaData(TableMetaDataContext.java:206)
at org.springframework.jdbc.core.simple.AbstractJdbcInsert.compileInternal(AbstractJdbcInsert.java:280)
at org.springframework.jdbc.core.simple.AbstractJdbcInsert.compile(AbstractJdbcInsert.java:266)
at org.springframework.jdbc.core.simple.AbstractJdbcInsert.checkCompiled(AbstractJdbcInsert.java:313)
at org.springframework.jdbc.core.simple.AbstractJdbcInsert.doExecuteAndReturnKeyHolder(AbstractJdbcInsert.java:396)
at org.springframework.jdbc.core.simple.SimpleJdbcInsert.executeAndReturnKeyHolder(SimpleJdbcInsert.java:142)
Affects: 4.3.14
Issue Links:
- SimpleJdbcCall can't access synonyms in Oracle database [SPR-16478] #21022 SimpleJdbcCall can't access synonyms in Oracle database
- Drop NativeJdbcExtractor mechanism in favor of java.sql.Connection.unwrap() [SPR-14670] #19234 Drop NativeJdbcExtractor mechanism in favor of java.sql.Connection.unwrap()
Referenced from: commits f2dc075, 766e602
Backported to: 4.3.15