Отношение один ко многим с ограничением базы данных и обратное =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?

Другие вопросы по тегам