Удаление и создание Eclipselink приводит к исключению уникального ограничения - PullRequest
1 голос
/ 27 мая 2011

У меня есть объект, у которого есть пользовательский первичный ключ. Сначала я удаляю эту сущность, а затем воссоздаю эту сущность с тем же первичным ключом. Это приводит к уникальному исключению ограничения при коммите / сбросе. В качестве обходного пути я вызываю сброс между операцией удаления и создания. Есть ли способ сделать эти вещи правильно / лучше, то есть без вызова сброса на менеджере сущностей?

Спасибо, Манфред

1 Ответ

0 голосов
/ 30 июня 2011
Команда

em.remove( yourEntity ) зарезервирует вашу сущность для удаления из Постоянного контекста, а затем из базы данных, но она не вступит в силу немедленно. Я могу себе представить, что удаление из контекста постоянства и базы данных еще не произошло, когда вы сохранили новый объект.

Вы можете попытаться удалить эту сущность с помощью пользовательского запроса JPQL, например "DELETE FROM YourEntity ye WHERE ye.primary1 = :primary1 AND ye.primary2 = :primary2... whatever;", после команды remove (). Я предполагаю, что это немедленно удаляет вашу сущность из контекста постоянства, но я не уверен. Попробуйте и дайте нам знать:)

...