Сохранение коллекций в Hibernate с помощью Spring - PullRequest
0 голосов
/ 19 декабря 2011

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

объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом: asd.qwe.MyCollection;вложенным исключением является org.hibernate.TransientObjectException: ...

В противном случае, если я попытаюсь сохранить коллекции перед сохранением своей сущности или если я задаю cascade="save-update" в определении list, я быполучить это:

Операция гибернации: не удалось вставить: [asd.qwe.MyCollection];неквалифицированное исключение SQLException для SQL [вставить в значения entity_collections (fk_entity, field2, field3) (?,?,?)];Состояние SQL [HY000];код ошибки [1364];Поле 'fk_entity' не имеет значения по умолчанию;вложенное исключение - java.sql.SQLException: поле 'fk_entity' не имеет значения по умолчанию

Это совершенно верно, потому что "fk_entity" относится к моей сущности, которая еще не сохранена, и имеетОграничение NOT NULL.

Мне интересно, почему Hibernate пытается сохранить коллекции до фактической сущности?И есть ли возможность отменить заказ на сохранение?

1 Ответ

0 голосов
/ 20 декабря 2011

Вы можете настроить отображение один-ко-многим в файле hbm вашей сущности. Когда вы сохраняете сущность, Hibernate сохранит Набор в БД.

<set name="your_set" cascade="all">
    <key column="set_contact_column"/>
    <one-to-many class="your_set_class_name" />
</set>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...