|
|
|
Hibernate.Transaction not active.
|
|||
|---|---|---|---|
|
#18+
Добрый день. На продакшн сервере ИНОГДА возникает проблема - объект не сохраняется(хибернейт не посылает никаких запросов, не выводит никаких ошибок). Никакой закономерности не наблюдается. есть подозрения, что это связано с (dynamicUpdate = true). Мб оно не всегда считает, что объект был изменен и поэтому не посылает запрос.(Убрать к сожалению эту строчк не могу, потому что упадет производительность) Сохраняю просто - session.saveOrUpdate. (если вдруг знаете как решить проблему на данном этапе, дальше можно не читать :) ) Воспроизвести на локальном сервере не получается(доступа к продакшену не имею :( ) Решил сохранять при помощи транзакции. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Сохраняет, но после сохранения вылетает Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В базу изменения успешно записываются. Но нормальный ответ клиенту вернуть не могу. (Данный метод вызывается из вебсервиса и gwt приложения). ниже привожу мои настройки Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2015, 18:14 |
|
||
|
Hibernate.Transaction not active.
|
|||
|---|---|---|---|
|
#18+
lemur489, смотря как реализован метод getSession(). Если это текущая, а не новая сессия (SessionFactory.getCurrentSession() вместо SessionFactory.openSession()), и транзакция в ней уже стартовала, то метод session.beginTransaction() вернет текущую транзакцию. Далее в приведенном коде транзакция завершается, но менеджер про это не знает, и когда пытается её завершить, возникает ошибка "Transaction not active". Так что единственный надежный метод в данном случае - открывать новую сессию при каждом сохранении, а это замедлит работу. Или разбираться почему сессия иногда не закрывается после обработки пользовательского запроса (на это указывает поведение, описанное в начале сообщения). Например, сессия сохраняется где-то в приложении / пользовательской сессии. В качестве временного решения можно порекомендовать использовать session.flush() вместо приведенного кода. Хочется транзакций - использовать соответствующие аннотации. Возможно, использовать вложенные транзакции, если позволяет SQL сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2015, 10:32 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=122&tid=2125094]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 414ms |

| 0 / 0 |
