отношение один ко многим с ограничением базы данных и обратное = true - PullRequest
1 голос
/ 11 мая 2011

Существует два класса 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, я получаю следующую ошибку:

ORA-01400: невозможно вставить NULL в ("SCHEMA". "B". "A_FK")

Можно ли вставить данные такого типа без указания флага inverse = true? а обратная связь?

Ответы [ 2 ]

0 голосов
/ 11 мая 2011

Преобразование проблемы в вопрос - это половина ответа ...

Чего не хватало, так это 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>
0 голосов
/ 11 мая 2011

Не без избавления от способа генерации идентификатора.Можете ли вы переключить способ генерации идентификатора?

...