![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Dreamtraveler |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 23.11.2009 Репутация: нет Всего: нет |
Здравствуйте. Хотелось бы услышать мнения знающих людей вот по такой проблемме:
Работаю со Spring 2.0 с боле новыми jawa 1.4 не дружит а жаль. так вот имеются следующие настойки transactionManager
Сохраняю в базу определенную информацию и тут же пытаюсь её прочесть и... не выходит приложение не видит сохраненную информацию, хотя она явно появилась в базе данных. Я думаю что в момент чтения транзакция не завершена и поэтому данные из этой же транзакции не ведны. Как мне завершить транзакцию в ручную чтобы данные стали ведны. Если остановить приложение и снова запустить то данные читаются нормально. Эксперименты с TransactionProxyFactoryBean не дали ни каких результатов. |
|||
|
||||
| necromancer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 317 Регистрация: 26.7.2006 Где: Москва Репутация: 6 Всего: 7 |
можно принудительно вызвать у сессии flush или commit.
Так же можно данные читать из другой транзакции. А вообще смысл сохранять и читать те же данные? -------------------- С уважением, Виталий Смык ---------------------------------------------------------------------------------------------- SCJP, SCWCD, OCA http://dev.maryno.net/video/ |
|||
|
||||
| Dreamtraveler |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 23.11.2009 Репутация: нет Всего: нет |
Дело в том что работа происходит так: нажимаем кнопку "пересчет" приложение считает сохраняет в БД, а другая часть приложения читает и выводит пользователю. Сделано так чтобы без пересчета данные можно было доставать. Пересчет может автоматом срабатывать иногда, а может и в ручную.
И еще хуже того. При нажатии на пересчет данные посчитались и сохранились. Даже после этого нажимаем кнопку показать идет новый запрос и все равно данные не видны пока приложение не перезапустишь. пробовал flush не помогает template.flush(); template.getSessionFactory().getCurrentSession().getTransaction().commit(); а это вообще ошибку вызывает типа транзакция не создана а мы её commit(); Может можно как то в настройках xml файла сделать так чтоб транзация данного метода сразу завершалась? Добавлено через 52 секунды А как читать данные не закоммитеной транзаккции? |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Либо делать это из той же транзакции, либо на уровне базы задавать уровень изоляции dirty reading (не знаю, умеют ли подобное Спринговые транзакции). На практике использование dirty reading вряд ли оправданно. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Dreamtraveler |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 23.11.2009 Репутация: нет Всего: нет |
Проблема решена при помощи вот такой операции template.setMaxResults(0);
В коде был обнаружен преждевременный возврат в результате чего template.setMaxResults(0); не вызывалась. При этом создавалась иллюзия того, что более ранние данные приходили а более поздние нет. Спасибо за ответы кто ответил! |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |