-
Notifications
You must be signed in to change notification settings - Fork 655
Closed
Labels
questionFurther information is requestedFurther information is requested
Description
Describe the bug
Spring JDBC Template relays on JDBC3Statement#getGeneratedKeys()
, which has been a case for years. In this commit: 712a8a5, the method has been changed, and now it throws an exception, which breaks the transaction.
To Reproduce
insert data into DB using: NamedParameterJdbcTemplate#update(....); This is the code from org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
:
@Override
public int update(final PreparedStatementCreator psc, final KeyHolder generatedKeyHolder)
throws DataAccessException {
Assert.notNull(generatedKeyHolder, "KeyHolder must not be null");
logger.debug("Executing SQL update and returning generated keys");
return updateCount(execute(psc, ps -> {
int rows = ps.executeUpdate();
List<Map<String, Object>> generatedKeys = generatedKeyHolder.getKeyList();
generatedKeys.clear();
ResultSet keys = ps.getGeneratedKeys();
if (keys != null) {
try {
RowMapperResultSetExtractor<Map<String, Object>> rse =
new RowMapperResultSetExtractor<>(getColumnMapRowMapper(), 1);
Expected behavior
JDBC3Statement#getGeneratedKeys()
should not throw an Exception but return null instead.
Logs
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: PreparedStatementCallback;
SQL [insert into ....))];
not implemented by SQLite JDBC driver; nested exception is java.sql.SQLFeatureNotSupportedException: not implemented by SQLite JDBC driver
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:96) ~[spring-jdbc-5.3.30.jar:5.3.30]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) ~[spring-jdbc-5.3.30.jar:5.3.30]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82) ~[spring-jdbc-5.3.30.jar:5.3.30]
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1577) ~[spring-jdbc-5.3.30.jar:5.3.30]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:669) ~[spring-jdbc-5.3.30.jar:5.3.30]
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:993) ~[spring-jdbc-5.3.30.jar:5.3.30]
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:359) ~[spring-jdbc-5.3.30.jar:5.3.30]
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:343) ~[spring-jdbc-5.3.30.jar:5.3.30]
at de.bayern.stmelf.wartung.service.MaintenanceService.saveMaintenance(MaintenanceService.java:94) ~[classes/:?]
Environment (please complete the following information):
- Spring Framework
Additional context
None
Metadata
Metadata
Assignees
Labels
questionFurther information is requestedFurther information is requested