HibernateException:外键可能不为null

时间:2011-05-04 14:22:34

标签: java hibernate

我在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>

现在,我的问题是我有没有父母的人的实例(例如孤儿)。

如果我试图坚持这些物体,我会得到:

  

java.sql.SQLException:null,message   来自服务器:“专栏   'PARENT_ID'不能为空“

如果我在映射文件中设置not-null="true",我会得到:

  

org.hibernate.PropertyValueException:   not-null属性引用null或   瞬态值:test.parent

这里的魔术是什么?

1 个答案:

答案 0 :(得分:1)

Valmar,因为你得到一个SQL异常,可能你的COLUMN'PARENT_ID'有一个非空约束。检查你的桌子DDL。你在用什么数据库?