Skip to content

NPE in Spring-JDBC with Oracle and SimpleJdbcInsert [SPR-16495] #21038

Closed
@spring-projects-issues

Description

@spring-projects-issues

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:

Referenced from: commits f2dc075, 766e602

Backported to: 4.3.15

Metadata

Metadata

Assignees

Labels

in: dataIssues in data modules (jdbc, orm, oxm, tx)status: backportedAn issue that has been backported to maintenance branchestype: regressionA bug that is also a regression

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions