實例關聯的外鍵對象不爲空時保存出錯

例子:

訂單:

public class Order{

.......

private Person person;

public Person getPerson(){

return person;

}

public void setPerson(Person person){

this.person = person;

}

......

}


客戶:

public class Person{

......

private Integer id;

private String name;

......

}


在hibernate映射裏面的配置如下:

......

<many-to-one name=''person" class="Person" lazy="false">

<column name="PERSON">

</many-to-one>

......

前臺表單:

<s:form>

......

<s:hidden name="order.person.id" value=""/>

<s:textfield name="order.person.name" value=""/>

......

</s:form>

當表單提交的時候如果後臺對應的order實例中person屬性已經創建,也就是order中的person屬性不爲空,但是person的id是空的,則當orderDao.save(order);的時候後臺就會報錯,原因:

因爲person的id是空的,但是person的實例存在,存在的person實例沒有和數據庫中的記錄相對應,也就是不存在id爲空的person,所以保存order的時候,就會報unsave的實例的錯誤。

修正:如果order沒有對應的人員,則將order中的person屬性值爲null則保存成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章