Я пытаюсь сохранить объект, имеющий коллекцию, как свойство, которое также необходимо сохранить в базе данных, поэтому у меня возникает следующая проблема: если я сохраняю экземпляр перед сохранением коллекции, я получаю следующую ошибку:
объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом: 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 пытается сохранить коллекции до фактической сущности?И есть ли возможность отменить заказ на сохранение?