Hibernate не сохраняет мои вновь созданные объекты - PullRequest
0 голосов
/ 24 августа 2011

У меня довольно простая структура таблиц: таблица Продукты с product_id и name атрибутами. таблица Штрих-коды с product_id (внешний ключ к таблице Products) и code атрибуты.

В своем коде я создаю новый экземпляр объекта Product:

Product product = new Product();

и я сохраняю продукт:

session.save(product);

Позже я создаю новый экземпляр объекта Barcode:

Barcode barcode = new Barcode();

и ассоциируйте продукт со штрих-кодом:

barcode.setProduct(product);

и попытайтесь сохранить штрих-код:

session.save(barcode);

и я получаю:

Исключение в потоке "main" org.hibernate.NonUniqueObjectException: другой объект с таким же значением идентификатора уже был связан с сеансом:

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 24 августа 2011

Как минимум пара идей:

  • Вы нанесли на карту поле @ Id без стратегии генерации, и вы не устанавливаете идентификатор самостоятельно.
  • Если ваша таблица штрих-кодов действительно имеет только два столбца, то вы, вероятно, устанавливаете product_id в качестве столбца @Id, и если бы вы создали два объекта штрих-кода для одного и того же продукта, это произошло бы.

Для большего количества идей, дайте больше деталей.

0 голосов
/ 24 августа 2011

Как сказал JB, ваши картографические файлы (и реальный код) действительно помогут. Сейчас вы можете попробовать добавить:

session.flush()

После того, как:

session.save(product)

Я предполагаю, что hibernate пытается "оптимизировать" эту транзакцию и снова сохраняет тот же продукт, когда вы сохраняете штрих-код.

Но это только одна возможность. Есть ли в вашем коде какие-либо циклы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...