![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
STIM |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 12.2.2012 Репутация: нет Всего: нет |
Я использую Hibernate 4.2.4 и PostgreSQL 9.2. Проблемы с транзакциями. Сущность "Students" замаплена как многие-к-одному с сущностью "Groups" через аннотации. Когда я запускаю следующий кусок кода:
Я получаю следующий неправильный результат:
Если я закомментирую это:
Я получу правильный результат.Почему так? я же должен закоммитить транзакцию?
Мой HibernateUtil класс
Это сообщение отредактировал(а) STIM - 15.12.2013, 06:35 |
||||||||||
|
|||||||||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
зачем этот блок?
0.Открыл транзакцию 1.Выполнил запрос 2.Коммит транзакции 3. профит |
|||
|
||||
STIM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 12.2.2012 Репутация: нет Всего: нет |
Чтобы избавиться от ленивой инициализации. С коммитом транзакции беда, если его выполнить, то после этого ни один запрос с транзакциями не выполняется. Что делать?
|
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
||||
|
||||
STIM |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 12.2.2012 Репутация: нет Всего: нет |
В том то и дело что никакой ошибки.
Как я уже в начале писал, выполняя этот код:
Я получаю следующий неправильный результат:
Хотя должен получить это. Ведь вызываю один и тот же метод, с одним и тем же входным параметром. Если я закомментирую коммит, то выводится правильно.
В чем проблема? |
||||||
|
|||||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
STIM, я предположу:
ты делаешь year.getStudentsFromGroup(7) в котором есть session = HibernateUtil.currentSession(); В котором сессия не открывается в случае, если она есть. Видимо, первый раз ты выгребаешь данные из сессии, а второй раз их там больше нет. Вообще метод currentSession() странный, обычно, перед каждой транзакцией нужно заново открывать сессию |
|||
|
||||
STIM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 12.2.2012 Репутация: нет Всего: нет |
Samotnik, спасибо большое! Действительно, там крылась ошибка, я неправильно управлял сессиями.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |