Операция удаления PreparedStatement не работает - PullRequest
0 голосов
/ 04 августа 2020

Я использую 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

Но другой запрос на чтение работает. Проблема только в удалении и обновлении. Есть предложения, в чем может быть проблема?

...