案例:
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)