|
|
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Добрый день . Поведение такое - есть веб приложение на локальной машине - все работает нормально и транзакции отрабатывают как надо ... на тестовом сервере- транзакции отрабатывают очень странно ... а именно нет вставки в расшивною таблицу что есть : Basket - и ShoppingCart - в которой могут лежать много баскетов - то что они могут лежать - задается через отдельную таблицу : кейс такой создаем новый баскет - т.к новой корзины нет , создаем новую корзину и связываем их Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Далее метод контроллера Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. сам сервис Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. лог на локальной машине : происходит сразу : в методе контроллера ... Hibernate: insert into `Basket` (creationDate, `вуввв`) values (?, ?) после выхода из контроллера : Hibernate: insert ShoppingCart ... Hibernate: insert into ShoppingCartTicket (shoppingCartId, transactionId) values (?, ?) т.е все нормально отработало ... теперь весь тот же код на удаленной тестовой машине : так же происходит вставка в Hibernate: insert into `Basket` (creationDate, `вуввв`) values (?, ?) по выходу из контролла - Hibernate: insert ShoppingCart ... а !!!!! Hibernate: insert into ShoppingCartTicket (shoppingCartId, transactionId) values (?, ?) связки не происходит !!!! вопрос почему??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 17:35 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Atum1, может, из-за вот этого фрагмента: Код: java 1. 2. 3. Дебажили на удаленной тестовой машине? Как-то мне кажется, что базы данных разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 18:24 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
yelenaAtum1, может, из-за вот этого фрагмента: Код: java 1. 2. 3. Дебажили на удаленной тестовой машине? Как-то мне кажется, что базы данных разные. база одна .. shoppingCart.addTicket(basket); - отрабатывает - и физически в коллекции появляется ...но при сохранении нет каскадной вставки только по выходу из метода происходит вставка в shoppingCart такое впечатление : что HibernateTemplate как то странно работает с транзакциями там где метод save - все отлично отрабатывает ... а там где saveorupdate - Нет! как такое может быть? saveorupdate is not valid without active transaction ? но транзакции стоят везде и методы независимые ... почему они объединятся... в какую одну транзакцию или нет??? непонятно ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 18:31 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Atum1, а почему получается, что авторпосле выхода из контроллера : Hibernate: insert ShoppingCart ... Hibernate: insert into ShoppingCartTicket (shoppingCartId, transactionId) values (?, ?) ? Может, сессия уже закрылась. Если у вас OpenSessionInView. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 18:36 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Atum1 saveorupdate is not valid without active transaction ? но транзакции стоят везде и методы независимые ... почему они объединятся... в какую одну транзакцию или нет??? непонятно ... А где вы начинаете эту новую транзакцию, чтобы независимые с propagation=Propagation.REQUIRED - по умолчанию, объединились в одну? Раз нет такой транзакции, то каждый раз получается новая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 18:44 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
yelenaAtum1 saveorupdate is not valid without active transaction ? но транзакции стоят везде и методы независимые ... почему они объединятся... в какую одну транзакцию или нет??? непонятно ... А где вы начинаете эту новую транзакцию, чтобы независимые с propagation=Propagation.REQUIRED - по умолчанию, объединились в одну? Раз нет такой транзакции, то каждый раз получается новая. да вот именно , тогда почему по вызову basketService.save(shoppingCart); выполняется только Код: java 1. а не Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 18:52 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
yelenaAtum1, может, из-за вот этого фрагмента: Код: java 1. 2. 3. Дебажили на удаленной тестовой машине? Я уже говорила, что меня смущает эта проверка. Вы дебаггером проверяли, что выполняется shoppingCart.addTicket(basket); ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 18:57 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Вы объясните: у вас все-таки ошибка в логе или просто вставки нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 18:59 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
yelenaВы объясните: у вас все-таки ошибка в логе или просто вставки нет? На локальной машине все ок вставка есть на удаленном сервере Элемент добавяется в карту но в таблицу вставки нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 22:37 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Atum1yelenaВы объясните: у вас все-таки ошибка в логе или просто вставки нет? На локальной машине все ок вставка есть на удаленном сервере Элемент добавяется в карту но в таблицу вставки нет Если используется одна и та же база данных и одно и то же приложение, и в логе нет ошибок, дебажьте приложение удаленно. Посмотрите, что происходит на удаленном сервере. А то у вас уже в комментариях мелькало "saveorupdate is not valid without active transaction", а потом вы говорите, что ошибок не было и нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 22:44 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
yelenaAtum1пропущено... На локальной машине все ок вставка есть на удаленном сервере Элемент добавяется в карту но в таблицу вставки нет Если используется одна и та же база данных и одно и то же приложение, и в логе нет ошибок, дебажьте приложение удаленно. Посмотрите, что происходит на удаленном сервере. А то у вас уже в комментариях мелькало "saveorupdate is not valid without active transaction", а потом вы говорите, что ошибок не было и нет. как раз я его и дебажу ... ошибок нет , локально вставки в расшивочную таблицу идет , на удаленном сервере - нет вот и вся разница ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2015, 09:49 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Atum1, Включи логирование на debug и посмотри объекты. Хибер все сущности расписывает. Может не попало ничего в ShoppingCart.tickets ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2015, 10:00 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1, Включи логирование на debug и посмотри объекты. Хибер все сущности расписывает. Может не попало ничего в ShoppingCart.tickets попало - сайз 1 , объект есть в коллекции ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2015, 15:04 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Atum1, а basket на момент сохранения shoppingCart уже в базе данных виден? Если breakpoint поставить перед сохранением shoppingCart. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2015, 16:08 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Atum1локально вставки в расшивочную таблицу идет , на удаленном сервере - нет вот и вся разница ... На сколько я понял эти две вставки связаны межу собой, а у Вас это в разных транзакциях делается. На локальной машине все хорошо, а на удаленной вторая транзакция почему то откатывается. Может нарушаются какие то ограничения в удаленной БД, может оптимизатор на удаленной машине местами вызов методов переставил :) Если вставка должна происходить либо в обе таблицы, либо не должна происходит вообще, делайте это все в одном методе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2015, 16:15 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Pavel Kurakin, возможно. Я предлагаю аффтару всё таки, выяснить. - вставляется и откатывается или НЕ вставляется. Либо по логу, либо сразу прочитав таблу в этой же транзакции-сессии. А потом уже искать причину. Да и ID транзакции же тоже можно в логи добавить? Если бизнес транзакция одна, то и физическая должна одна. Иначе не откатить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2015, 16:42 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Pavel KurakinAtum1локально вставки в расшивочную таблицу идет , на удаленном сервере - нет вот и вся разница ... На сколько я понял эти две вставки связаны межу собой, а у Вас это в разных транзакциях делается. На локальной машине все хорошо, а на удаленной вторая транзакция почему то откатывается. Может нарушаются какие то ограничения в удаленной БД, может оптимизатор на удаленной машине местами вызов методов переставил :) Если вставка должна происходить либо в обе таблицы, либо не должна происходит вообще, делайте это все в одном методе. в том то и дело что нет явной связи - вставка в первую таблицу - обязательна и она происходит ... вторая таблица это абстракция -как и расшивочная таблица ... первая таблица ничего о других не знает . ps добавил в код ht.flush(); Код: java 1. 2. 3. 4. 5. 6. 7. 8. все стало работать одинаков и верно . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 13:34 |
|
||
|
HibernateTemplate странное поведение при коммите
|
|||
|---|---|---|---|
|
#18+
Atum1вторая таблица это абстракция -как и расшивочная таблица ... первая таблица ничего о других не знает . обычно на момент написания кода - уже все всё знают. Либо короткие транзакции, строго последовательны, сброс в БД на каждый чих, перечитка заново и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 14:36 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=124&tid=2125156]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 355ms |

| 0 / 0 |
