1. 程式人生 > >關於Hibernate執行查詢後會引發update操作的解決方法

關於Hibernate執行查詢後會引發update操作的解決方法

遇到了這個問題

在網上查了各種方法

這裡收集整理了一下

產生原因:hibernate 做持久化時get 和 set 值,發現get 值不同則做同步更新到資料庫. 才會發生 查詢後又做更新操作

1、使用session.lock(object, LockMode.NONE)

(1)、session.saveOrUpdate(object)。這語句會把遊離態的PO轉為持久態的PO並提交給資料庫

(2)、session.merge(object)。這語句會把遊離態的PO轉為持久態的PO,並進行合併操作。

(3)、session.lock(object, LockMode.NONE)。這語句只會把遊離態的PO轉為持久態PO,不作其他操作。不過,PO必須是沒有修改過的,這方法挺適合做一個應用層

2、新增事務處理機制

3、給set繫結dynamic-update="false"

4、因為hibernate對持久態的物件會進行自動的比較的。get出來的持久態的物件可以用session的evict(Object object)把這個物件變成脫管的就可以了。也就是說把持久態的轉換成遊離態就好

詳細例子:

希望出現同樣問題的小夥伴少走一點彎路