我在Person和他們的父母/子女(也是Person的實例)之間存在以下非常簡單的多對一關係。HibernateException:外鍵可能不爲空
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:空,消息 從服務器: 「列 'PARENT_ID' 不能爲空」
如果我在映射文件中設置not-null="true"
,我得到:
org.hibernate.PropertyValueException: 不是空屬性引用null或 瞬態值:test.parent
這裏有什麼魔術?
第一個錯誤消息來自服務器,而不是Hibernate。你確定PARENT_ID在數據庫表中是可以空的嗎? – 2011-05-04 14:26:59
如果您從'bag'鍵中移除'not-null =「false」',該怎麼辦?我有相同的環境,但用'list'而不是'bag' – jotapdiez 2011-05-04 14:29:45
@Ben Hoffstein \t 我使用MySQL。我讓Hibernate通過設置創建 –
Timo
2011-05-04 14:47:30