2010-09-29 1 views
5

Possible Duplicate:
Hibernate: different object with the same identifier value was already associated with the sessionHibernate: Не удалось синхронизировать состояние базы данных с сеансом

При попытке вставить новую запись в многие ко многим соответствующей таблицы, я получаю эту ошибку: Could not synchronize database state with session Я могу понять, что это то, что имеет дело с getSession() & session.close()

Но я не могу точно понять это. Для каждой транзакции я создаю новый сеанс. Но я закрываю все сеансы при выходе пользователя из системы. i.e: Создание сеанса спящего режима & связывает его с HttpSession. Затем я уничтожаю его при выходе пользователя из системы.

Несколько раз после работы над этой проблемой, я получаю ошибку a different object with the same identifier value was already associated with the session:.

Все эти ошибки возникают из-за неправильного открытия & закрытия сеансов.

Какой метод вы предпочитаете открывать и закрывать. Мой проект создавал веб-приложение. Каждый шаг в этом веб-приложении связан с БД.

Любые предложения !!!

ответ

10

a different object with the same identifier value was already associated with the session

Hibernate отслеживает отображенных объектов работал на течение сессии, поэтому он может обнаружить любые изменения, внесенные в эти объекты и записать их обратно в базу данных, когда сделка совершается. Если вам разрешено добавлять разные объекты с тем же объектом идентификатора базы данных к сеансу, было бы неоднозначно, какое состояние объекта должно быть записано.

Working with objects из справочного руководства hibernate подробно объясняет это (и способы его устранения). Особый интерес представляет раздел под названием «Изменение отдельных объектов», но ему также нужно будет прочитать введение, чтобы понять используемые термины.

 Смежные вопросы

  • Нет связанных вопросов^_^