Отношение один ко многим с ограничением базы данных и обратное =true
Есть два класса A и B и отображения спящего
<hibernate-mapping default-lazy="false">
<class name="A" table="A">
<id name="id" type="long">
<generator class="sequence"><param name="sequence">A_SEQUENCE</param></generator></id>
<set name="a" cascade="all" inverse="false" >
<key><column name="A_FK" not-null="true" /></key>
<one-to-many class="B" /></set>
</class>
</hibernate-mapping>
<hibernate-mapping default-lazy="false">
<class name="B" table="B">
<id name="id" type="long"> <column name="ID"/>
<generator class="sequence"><param name="sequence">B_SEQUENCE</param></generator></id>
</class>
</hibernate-mapping>
В базе данных есть ненулевое ограничение и ограничение внешнего ключа для столбца A_FK таблицы B. Когда я пытаюсь вставить A, который содержит B I, появляется следующая ошибка:
ORA-01400: невозможно вставить NULL в ("SCHEMA"."B"."A_FK")
Можно ли вставить данные такого типа без указания флага inverse=true? а обратные отношения?
2 ответа
Решение
Преобразование проблемы в вопрос - половина ответа...
Чего не хватало, так это not-null="true"
на ключе набора:
<set name="a" cascade="all" inverse="false" >
<key not-null="true"><column name="A_FK" not-null="true" /></key>
<one-to-many class="B" />
</set>
Не без избавления от того, как генерируется идентификатор. Можете ли вы переключить, как генерируется Id?