HibernateException: внешний ключ не может быть нулевым - PullRequest
0 голосов
/ 04 мая 2011

У меня есть следующие довольно простые отношения многие-к-одному между Person и их родителями / детьми (которые также являются примерами Person).

Person.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 04.05.2011 15:02:31 by Hibernate Tools 3.3.0.GA -->
<hibernate-mapping>
    <class name="test.Person" table="PERSONS">

        <id name="id" type="long" access="field">
            <column name="PERSON_ID" />
            <generator class="native" />
        </id>

        <bag name="children" table="PERSONS" lazy="false" inverse="true" cascade="all">
            <key column="PERSON_ID" not-null="false"></key>
            <one-to-many class="test.Person" />
        </bag>

        <many-to-one name="parent" column="PARENT_ID" not-null="false" />

    </class>
</hibernate-mapping>

Теперь проблема в моем случае заключается в том, что у меня есть экземпляры Person, у которых нет родителей (например, сирот).

Если я пытаюсь сохранить эти объекты, я получаю:

java.sql.SQLException: null, message с сервера: "Колонка" 'PARENT_ID' не может быть нулевым "

Если я установлю not-null="true" в файле сопоставления, я получу:

org.hibernate.PropertyValueException: свойство not-null ссылается на ноль или переходное значение: test.parent

В чем тут фокус?

1 Ответ

1 голос
/ 04 мая 2011

Valmar, так как вы получаете исключение SQL, возможно, у вашего COLUMN 'PARENT_ID' есть ограничение, не равное NULL.Проверьте свой стол DDL.Какую базу данных вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...