У меня есть основной поток, который порождает поток # 2, который использует тот же сеанс гибернации в основном потоке.Поток № 2 просто «выбирает 1» каждые несколько минут, чтобы поддерживать соединение с БД из-за длительного процесса в основном потоке.Как только основной поток завершается с обработкой, он вызывает коммит, но я получаю ошибку:
Caused by: org.hibernate.TransactionException: JDBC commit failed
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:161)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
... 5 more
Caused by: java.sql.SQLException: Can't call commit when autocommit=true
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:930)
at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1602)
at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:170)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:146)
... 6 more
Внутри основного потока он создает внутренние транзакции, которые успешно фиксируются, это просто внешняя транзакция, когдаон совершает, что выдает эту ошибку.Я не вижу, что может изменить булеву автокоммит.До того, как я ввел 2-й поток, чтобы поддерживать соединение живым, эта ошибка никогда не возникала.