天天看點

Hibernate中saveOrUpdate()使用時要注意的問題

在Hibernate中saveOrUpdate()方法在執行的時候,先會去session中去找存不存在指定的字段,如果存在直接update,否則save,這個時候問題就發生了。

      有兩張表,表A和表B,這兩張表的主鍵都是一樣的,例如都是MASTER_ID,同時對應的BO裡面屬性都是masterID,現在要執行的操作是,以MASTER_ID為條件将表A中的資料查詢出來,然後将部分值插入到表B中,然後再更新表B,在查詢表A後,session中已經存在masterID了,這個時候再去對表B進行savaOrUpdate的時候,Hibernate會發現session中已經存在masterID了,是以執行的就是update,但是實際上表B中根本不存在masterID這個值,當你執行完查詢資料庫的時候會發現沒有插入資料,像這種情況,就得先用masterID對表B進行查詢,當傳回的BO為NULL時,new一個新BO然後再進行插入,這個時候用到的就是createbo了。

本文轉自sucre03 51CTO部落格,原文連結:http://blog.51cto.com/sucre/382195,如需轉載請自行聯系原作者