Hibernate: Ошибка при сохранении объекта NonUniqueObjectException

By | November 7, 2010

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

Данная ошибка проявляется в момент вызова saveOrUpdate() у hibernate template. Суть проблемы в том, что в один момент времени у нас есть два разных объекта с одинаковым идентификатором: один в сессии, а второй тот, что мы пытаемся сохранить.

В данном коде разные объекты p1 и p2 имеют одинаковый идентификатор, соответственно, на этапе сохранения мы получим NonUniqueObjectException.

Ошибку можно избежать используя merge() вместо saveOrUpdate() (см. пример выше), либо получив p2, а не создавая новый объект: