транзакция гибернации, фиксация недействительна без активной транзакции - PullRequest
0 голосов
/ 11 октября 2011

Прежде всего, извините, если мой английский такой плохой, я новичок в использовании hibernate, поэтому есть вопрос, который я хочу задать всем старшим. вот условие: Я использую zk для представления, в одном представлении у меня есть панель инструментов, на которой есть кнопка (добавить), (сохранить), (отменить). так что я хочу, чтобы пользователь klik (добавить) hibernate начал новую транзакцию, а затем пользователь вставил некоторые данные после этого пользователя klik (сохранить). в этом (сохранить) событие кнопки hibernate вызовет commit для вставки данных в базу данных.

проблема в том, когда пользователь сохраняет клик, это ошибка с сообщением «фиксация недействительна без активной транзакции» после 1 отслеживания потока программы я обнаружил, что когда пользователь щелкает кнопку (сохранить), ранее запущенная транзакция больше не активна.

## Я хочу спросить, почему транзакция неактивна, а я еще не зафиксировал ее? ##

я использую пружину в спящем и hibernate.current_session_context_class = Тема

спасибо за помощь

1 Ответ

1 голос
/ 11 октября 2011

Невозможно сказать, не увидев код.Но то, что вы хотите сделать, это очень плохая идея.Не делай этого.Транзакция должна быть максимально короткой.Если открыть транзакцию в течение длительного времени (ваш пользователь может занять некоторое время между Добавить и Сохранить кликами), соединение останется открытым и не будет использоваться другими одновременно работающими пользователями, что, вероятно, приведетв любом случае, и может заблокировать некоторые строки или таблицы базы данных, заставляя всех остальных пользователей ждать завершения транзакции.

Вставка в базу данных и фиксация должны выполняться только тогда, когда пользователь нажимает * 1007Кнопка * Сохранить .Изменения, сделанные с помощью кнопки Добавить , не должны сохраняться в базе данных, а должны храниться в памяти до тех пор, пока пользователь не нажмет Сохранить .

...