Hibernate不調用update卻自動更新


案例:

TInfCustomer cus = (TInfCustomer) this.baseDao.getOne(helper);

cus.setXXX

cus .setXXX

不調用update也寫入數據庫

原因:

hibernate在每個session里都會做些處理,比如把查詢過的對象緩存起來什么,這個時候這些對象的實例是和數據庫保持關聯的,hibernate會記錄session生命周期內所有緩存對象的操作過程,最后都會反映到數據庫去,也就是所謂的托管狀態,所以才會有自動更新這種問題。只要每次都把查詢到的對象用evict(或clear)清除(記得,是每次),那么就不會有托管狀態的entity,也就不會有自動更新,但這不會影響(應該)update(或saveOrUpdate)操作,evict只是清楚實例與數據庫的關聯而已,不是清楚實例本身。 
 
修改:baseDao.getCurrentSession().evict(arg0)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM