Hibernate: опционально многие-к-одному с ненулевыми столбцами - PullRequest
0 голосов
/ 25 января 2012

У меня есть необязательные отношения многие-к-одному между двумя классами.Hibernate переводит свойство как необязательное, устанавливая внешние ключи в null.

Моя db-схема не позволяет столбцам быть нулевыми.Свойство, которое должно быть необязательным, представлено значением по умолчанию этих столбцов.

<class name="sth.Alpha" ...>
    ....
    <many-to-one name="beta" not-found="ignore" class="sth.Beta" insert="true" update="true">
        <column name="a1/>
        <column name="a2/>
    </many-to-one>
</class>

<class name="sth.Alpha" ...>
    <composite-id>
        <key-property name="b1" type="int">
            <column name="b1" precision="8" scale="0"/>
        </key-property>
        <key-property name="b2" type="int">
            <column name="b2" precision="8" scale="0"/>
        </key-property>
    </composite-id>
</class>

выбор данных не является проблемой, так как not-found="ignore" в теге may-to-one может привести к null - beta -объект.Но если я хочу вставить Alphabeta, установленным на null.Я получаю исключение, что невозможно вставить null в a1 и a2.

Я избавлюсь от этой проблемы, если для insert и update установить значение false.Но это приводит к тому, что отношения не сохраняются, если они установлены.

База данных-схема не может быть изменена, а Hibernate-версия установлена ​​на 3,5

Я также был бы рад, если бы вы сказали мне, чтоэто невозможно

1 Ответ

3 голосов
/ 26 января 2012

как использовать 0 вместо нуля в сочетании с <id unsavedvalue="whatever"> может помочь

или

другое решение

...