В моем проекте иногда требуется загрузить объект для их редактирования.
До этого, я думаю, спящий режим закрыт.
За некоторое время до сохранения отредактированного объекта (с помощью saveOrUpdate
) мне нужно искать (снова открыть сеанс) объект в базе данных, и, возможно, объект, возвращаемый этим поиском, является объектом, который я обновлю , (Мне нужен этот объект для некоторых проверок и других вещей ...)
После этого, когда я пытаюсь сохранить объект, hibernate говорит, что у меня есть другой объект с таким же идентификатором в сеансе.
Я реализовал свои собственные методы equals
и hashcode
, и я пытался что-то сделать, например session.evict(object)
, но ничего не работает.
Итак, я использую session.merge(object)
вместо session.saveOrUpdate(object)
, и это работает.
Но я не знаю точно, каковы последствия этого. Я могу просто заменить saveOrUpdate
на merge
, или я получу некоторые проблемы с этим? Еще одна вещь, которую я должен знать об этом?
Заранее спасибо.