Есть ли способ удалить/приостановить текущий сеанс гибернации, управляемый пружиной, из потока, чтобы можно было использовать новый, а затем поместить исходный сеанс обратно в поток? Оба работают с одним и тем же источником данных.
Чтобы подробнее описать проблему. Я пытаюсь создать плагин для инструмента, у которого есть собственное управление транзакциями Spring Hibernate. В этом плагине я хотел бы сделать некоторые из моих собственных баз данных, которые выполняются в нашем собственном менеджере транзакций Spring. Когда я сейчас пытаюсь выполнить действия с базой данных, наш менеджер транзакций начинает жаловаться на уже используемый несовместимый менеджер транзакций.
org.springframework.transaction.IllegalTransactionStateException: Pre-bound JDBC Connection found! HibernateTransactionManager does not support running within DataSourceTransactionManager if told to manage the DataSource itself. It is recommended to use a single HibernateTransactionManager for all transactions on a single DataSource, no matter whether Hibernate or JDBC access.
Обходной путь, который, кажется, помогает, запускает мой собственный код в другом потоке и ждет его завершения, прежде чем я продолжу работу с остальной частью кода.
Есть ли лучший способ, который кажется немного глупым/излишним? Какой-то способ приостановить текущий сеанс гибернации, затем открыть новый и восстановить исходный сеанс.