![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Fedrus |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Здравствуйте все!
Есть форма на которую выводится список юзеров. При нажатии на кнопку едит (возле соответствующего юзера) отображается (на этой же форме) форма редактирования юзера!! здесь!! я запрашиваю соответствуещего юзера и заполняются поля имя логин и тд редактирую информацию и нажимаю кнопку выполняется код:
Здесь я попробывал получить юзера присвоить ему измененные значения и поместить его обратно в базу но опять та же ошибка: a different object with the same identifier value was already associated with the session раньше пытался просто
Помогите пожалуйста. Впринципе понятно что взят один юзер потом я изменяю его и хочу именного его проапдейтить от куда берется другой? Нужен еще какой код допишу. --------------------
Если вы идете через ад, идите не останавливаясь. |
||||
|
|||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Fedrus,
а где ошибка вываливается? -------------------- Lost.... |
|||
|
||||
Fedrus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Интересно получилось))
В пятницу сидел искал решение и дописал session.clear(); всеравно, ошибка выбрасывалась на session.update(user);(может плохо задиплоился проект) Вобщем я искал решение дальше попробовал получать user и егоже и класть обратно (тут опять начала возникать эта ошибка) )))) сегодня пришел уткнуся еще подумал и решил на форуме написать)) Сейчас просиш где ошибка вываливается убираю
иии нет ошибки ну я просто офигел сначало ![]() session.clear(); вот в тут то все и стало понятно хотя несовсем не доконца Вот с clear работает но не моглибы расказать возможные проблеммы использования этого метода может есть другое решение)) Это сообщение отредактировал(а) Fedrus - 6.11.2007, 13:36 --------------------
Если вы идете через ад, идите не останавливаясь. |
|||
|
||||
mindflyer |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 20.10.2004 Где: Smolensk, Russia Репутация: 3 Всего: 4 |
У тебя есть один объект, который "this.user" (назовём его первый) и второй, который ты взял из базы
Выполняя код
ты устанавливаешь ссылку userr на первый объект, т.е. теперь userr указывает на тот же объект, что и this.user (ну это очевидно). И когда ты пытаешься сделать
то ты отдаешь hibernate первый объект. Но у него в этой сессий уже есть второй объект с тем же id, о чём он тебе честно и говорит. Если ты хочешь проапдейтить объект, то ты должен установить свойства именно у того объекта, который ты прочитал из базы данных. Есть разные варианты, но проще всего просто скопировать свойства из this.user в userr. Сразу через GUI редактировать объект, полученный из бд, не советую, т.к. в общем случае, чем меньше длится транзакция, тем лучше. Также можешь глянуть документацию на методы merge и update в отношении detach объектов - твой первый объект как раз является detach объктом. session.clear() - если кратко: очищает кэш сессии, т.е. после вызова этого метода сессия "забывает" про ранее загруженные объекты. Лучше его не использовать, если нет опыта работы с hibernate. (а когда он появится, то вряд ли возникнет необходимость его юзать ![]() Это сообщение отредактировал(а) mindflyer - 9.11.2007, 19:20 |
||||||||
|
|||||||||
YuryIlinikh |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 27.8.2007 Репутация: нет Всего: нет |
После выбора юзера закрой для него сессию и он станет detached после его можно менять, и делать update
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |