问题
I'm using a Spring JdbcTemplate without a "transactionManager" since I have mostly select to do.
When I try to call select queries from JUnit, it works, but when I try to call an "update", it freezes the test (no connection timeout, nothing, just waiting).
I've seen examples of jdbcTemplates insert/update without any transactionManager, but could it be the problem here ?
public void insert(String param1, String param2) {
String sql = "UPDATE MYTABLE SET name = :param1 where first_name = :param2";
NamedParameterJdbcTemplate npJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
SqlParameterSource namedParameters = new MapSqlParameterSource().addValue("param1", param1).addValue("param2", param2);
npJdbcTemplate.update(sql, namedParameters);
}
回答1:
The problem here was I had passed the same update query on the same line in a SQL client (Oracle SQL developer) but it had not been committed in this client.
My JUnit had been stalled for 12 hours and right after I commit the query in SQL developer, the update occurred in the JUnit.
It had nothing to do with transaction management in the app or autocommit status of the datasource.
来源:https://stackoverflow.com/questions/52954823/jdbctemplate-update-freezes