Я использую NamedParameterJdbcTemplate, чтобы удалить запись из таблицы в приложении springboot, как это.
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("param1", "value1");
parameters.addValue("listValues", "listOfValues");
String deleteSqlString = "DELETE
FROM table1
WHERE start_date >= to_date(:param1, 'yyyyMMdd')
AND code IN (:listValues)"
Object result = paramJdbcTemplateFedb.execute(deleteSqlString, parameters,
new PreparedStatementCallback() {
public Object doInPreparedStatement(PreparedStatement ps)
throws SQLException, DataAccessException {
return ps.executeUpdate();
}
});
Здесь, когда дело доходит до ps.executeUpdate () , он никогда не выйти из этого заявления. И выполнение никогда не заканчивается, и никаких ошибок тоже. Когда я проверил журнал, я получил что-то вроде этого. Соединение не было возвращено из источника данных.
2020-08-04 12:16:04.377 DEBUG 39928 --- [nio-8443-exec-5] o.s.jdbc.datasource.DataSourceUtils : Fetching JDBC Connection from DataSource
2020-08-04 12:16:04.442 DEBUG 39928 --- [-ClientPoller-0] org.apache.tomcat.util.net.NioEndpoint : timeout completed: keys processed=1; now=1596523564442; nextExpiration=1596523563760; keyCount=0; hasEvents=false; eval=false
2020-08-04 12:16:04.517 TRACE 39928 --- [nio-8443-exec-5] o.s.jdbc.core.StatementCreatorUtils : Setting SQL statement parameter value: column index 1, parameter value [20190110], value class [java.lang.String], SQL type unknown
2020-08-04 12:16:04.518 TRACE 39928 --- [nio-8443-exec-5] o.s.jdbc.core.StatementCreatorUtils : Setting SQL statement parameter value: column index 2, parameter value [20190110], value class [java.lang.String], SQL type unknown
2020-08-04 12:16:05.032 DEBUG 39928 --- [-ClientPoller-1] org.apache.tomcat.util.net.NioEndpoint : timeout completed: keys processed=0; now=1596523565032; nextExpiration=1596523565032; keyCount=0; hasEvents=false; eval=false
2020-08-04 12:16:05.442 DEBUG 39928 --- [-ClientPoller-0] org.apache.tomcat.util.net.NioEndpoint : timeout completed: keys processed=1; now=1596523565442; nextExpiration=1596523565442; keyCount=0; hasEvents=false; eval=false
Здесь соединение никогда не возвращается. А вот и журнал рабочего запроса.
2020-07-31 17:22:48.334 DEBUG 32340 --- [nio-8443-exec-6] o.s.jdbc.datasource.DataSourceUtils : Fetching JDBC Connection from DataSource
Delegating to parent classloader sun.misc.Launcher$AppClassLoader@18b4aac2
2020-07-31 17:22:49.450 DEBUG 32340 --- [nio-8443-exec-6] o.a.c.loader.WebappClassLoaderBase : --> Returning stream from parent
2020-07-31 17:22:49.465 DEBUG 32340 --- [nio-8443-exec-6] o.s.jdbc.datasource.DataSourceUtils : Returning JDBC Connection to DataSource
Но другой запрос на чтение работает. Проблема только в удалении и обновлении. Есть предложения, в чем может быть проблема?