#java #database #hibernate #jpa
Вопрос:
У меня есть таблица с отношением OneToMany :
lt;hibernate-mappinggt; lt;class name="com.al6.jtob.data.Lsell" table="LSELL" gt; ... lt;many-to-one name="stock" class="com.al6.jtob.data.Stock" insert="false" update="false"gt; lt;column name="IDITEM" /gt; lt;column name="IDWAREHOUSE" /gt; lt;/many-to-onegt; ... lt;/classgt; lt;/hibernate-mappinggt;
Идентификатор запаса состоит из (IDITEM, IDWAREHOUSE).
Это хорошо работает, когда я загружаю существующие объекты LSELL. Но когда я создаю новый объект LSELL, у меня возникает эта ошибка :
Caused by: javax.ejb.EJBException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.al6.jtob.data.Stock
Я не хочу обновлять или сохранять какие-либо новые «запасы» в базе данных, это просто данные только для чтения. Все данные о запасах являются полными и достаточными. Цель состоит в том, чтобы просто получить «запас» «Lsell», когда я показываю «Lsell».
Комментарии:
1. Пожалуйста, добавьте, как вы сохраняете сущность Lsell.
Ответ №1:
Вы забыли объявить CascadeType
в реляционном отображении. вы должны поместить cascade=all
тег сопоставления, потому CascadeType
что он распространяет переходы сущностей от родителя к потомку. Например, если вы сохраняете родительскую сущность, упомянутые сущности также сохраняются перед сбросом.
lt;one-to-many name="lsell" class="com.al6.jtob.data.Lsell" cascade="all"gt; ... lt;/one-to-manygt;
Комментарии:
1. Я понимаю, но я, если создается «Lsell», связанный «запас» уже находится в таблице базы данных. Акции инициализируются один раз в день, и я не хочу ничего удалять или добавлять в эту таблицу. Я просто хочу связать «Lsell» с информацией о запасах при загрузке Lsell. Должен ли я был использовать «отсоединить» вместо «все» в этом случае ?
2. Какова ваша родительская сущность?
3. Lsell является родительской организацией.
4.
cascade="all"
поместите свою родительскую сущность не в дочернюю сущность. не могли бы вы, пожалуйста, показать мне вашу родительскую сущность.5. из-за дочерней сущности получается ссылка на родительскую сущность