Ошибка Primary Key при работе с дочерними сущностями

Добрый день.

При попытке создания одновременно дочерних сущностей первого и второго уровня получаем ошибку Primary Key.

Пример:
Имеются сущности:

  • “Страна” (родитель: имя, города),
  • “Город” (дочка 1го уровня: имя, страна_ИД, улицы),
  • “Улица” (дочка 2го уровня: имя, город_ИД).

Создаем страну. Задаем имя “Россия”, создаем элемент для вложенной таблицы “Города”: задаем ему имя “Москва”, а также добавляем во вложенную таблицу “Улицы” новый элемент: “Красная площадь”. Жмем “ОК”, видим элемент в таблице с улицами на странице добавления города “Москва”. Жмем еще раз “ОК” - видим элемент “Москва” в таблице “Города” на странице добавления страны “Россия”. Жмем “ОК” - получаем ошибку Primary Key: "Не удается вставить повторяющийся ключ в объект “Города” ".

Получается, что cuba создает “Город” несколько раз.
Ошибка отсутствует, если мы не добавляем “Улица” сразу при создании страны.
Ошибка возникает, если мы добавляем новые “Город” и “Улицу” путем редактирования “Страны”. Однако ошибка отсутствует, если мы добавляем “Улицу” путем редактирования существующего “Города” при редактировании “Страны”.

Подобная ошибка встречается часто в разных местах и разных связках таблиц приложения, если мы создаем список дочерних сущностей второго порядка одновременно с дочерней сущностью первого порядка, к которой их привязываем.

ID в сущностях храним в типе Long (bigint).

2 симпатии

Здравствуйте.

Рекомендую посмотреть на примеры вот здесь: Редактирование композитных сущностей

Если не поможет, приложите сюда тестовый проект с проблемой, мы поможем разобраться что у вас не так.