2011-09-19 63 views
0

您好,我正在使用MYSQL和Hibernate,並有一個表Customer具有默認值爲1的customer_type列,其外鍵在Customer中,但CustomerType表中的主鍵查找下面的代碼在我的客戶HBM文件我已經寫了下面的代碼:如何將默認值設置爲休眠關係

<many-to-one name="customerType" class="CustomerType" lazy="false"> 
    <column name="customer_type_id" not-null="true"/> 
</many-to-one> 

但該列不爲空,並在我的表的默認值是1,並同時節省了我的客戶對象becos默認值是有我沒有設置此對象在表中,但獲得異常propertyviolationexception不空引用null值我怎麼能過來這個問題,以及如何設置默認值休眠關係

回答

0
As per SQL default value will be set when you omit the column in insert script. 

它的工作方式與Hibernate一樣,最終通過在HBM中包含每個映射的列來執行插入腳本。一種方法是使用默認值爲CustomerType創建一個對象。然後在保存父對象時將其設置爲您的父對象,如果這不是由您的任何業務邏輯設置的。所以,保存沒有任何異常。

其他簡單方法是在多對一映射集insert='false'中映射一個用於customer_type_id列的基本類型字段並將值設置爲1。所以,這個人會被保存到數據庫的默認值列,當檢索關係將愉快加載。

+0

嗨Pokuri,感謝ü爲您的寶貴建議其工作正常,我知道的第一種方法和不知道第二個非常感謝你 – indu

0

您強制將您的字段customer_type_id設置爲非空,因此hibernate會使用其最低值初始化該值。如果你想用默認值預置您的ID,在Hibernate映射使用下面的代碼CustomerType類:

<propery name="customerTypeId" type="long" column="customer_type_id"> 
    <column=" name="customer_type_id" not-null="true" default="1000"/> 
</property>