解決使用JPA時對象在set屬性時更新了數(shù)據(jù)庫問題

之前也遇到過一次這個問題姐霍,打印的日志中也可以看見update相關(guān)的sql語句心赶,但當(dāng)時不知道為什么會去自動更新珊泳,就用了別的方式去避免了。后來再次出現(xiàn)的時候猜极,用其他方式已經(jīng)無法避免中姜,還是要找到問題真正所在,發(fā)現(xiàn)是將從數(shù)據(jù)庫中獲取到的對象去set一個屬性的時候跟伏,數(shù)據(jù)庫就自動去update了

問題重述

//可退商品數(shù)量
orderGoods.setGoodsInfoNum(goodsNumSum);
//可退商品總價
orderGoods.setGoodsBackPrice(goodsPriceSum);

就類似上面的代碼丢胚,從數(shù)據(jù)庫中獲取到某個對象,然后在set屬性時更新了數(shù)據(jù)庫受扳,在控制臺可以看到打印的相應(yīng)更新的語句

問題原因

Hibernate有三種基本狀態(tài):
自由態(tài)(臨時狀態(tài)):直接new出來的對象携龟,既沒有被保存到數(shù)據(jù)庫中,也不處于session緩存中
游離態(tài):已經(jīng)被保存到數(shù)據(jù)庫中但不處于session緩存中
持久態(tài):已經(jīng)被保存到數(shù)據(jù)庫中并且加入到session緩存中

上述代碼中的對象是持久化狀態(tài)的對象勘高,對其進(jìn)行set操作時session緩存中的數(shù)據(jù)發(fā)生了改變峡蟋,數(shù)據(jù)庫也會跟著進(jìn)行相應(yīng)的改變,所以執(zhí)行了update的更新操作

問題解決

OrderGoods orderGoodsCopy = new OrderGoods();
BeanUtils.copyProperties(orderGoods,orderGoodsCopy);
//可退商品數(shù)量
orderGoodsCopy.setGoodsInfoNum(goodsNumSum);
//可退商品總價
orderGoodsCopy.setGoodsBackPrice(goodsPriceSum);

最簡單也是最容易想到的方式就是重新new一個對象然后再去set屬性华望,這個時候因為不是session中的數(shù)據(jù)蕊蝗,不會因為對象屬性發(fā)生改變而同步到數(shù)據(jù)庫中

但如果這個對象要用的到,那么在set之前可以先將其轉(zhuǎn)為游離態(tài)赖舟,session中提供了幾個方法:
close方法:關(guān)閉session這樣這個對象肯定是游離態(tài)了,因為session已經(jīng)關(guān)閉了,但是往往我們實際的開發(fā)過程中磁餐,session在后面是要用的到的树叽,所以這個方法雖然可行,但也要分場景
clear方法:將session中的所有的對象全部清除出緩存石洗,雖然session清除了全部的對象之后自然就會變?yōu)橛坞x態(tài)了幢泼,但這樣做不太合適
evict方法:將某一個對象清除出緩存session,這個方法是很好的實現(xiàn)方式劲腿,推薦使用

hibernate三種狀態(tài)轉(zhuǎn)換
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旭绒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挥吵,老刑警劉巖重父,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忽匈,居然都是意外死亡房午,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門丹允,熙熙樓的掌柜王于貴愁眉苦臉地迎上來郭厌,“玉大人,你說我怎么就攤上這事雕蔽≌勰” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵批狐,是天一觀的道長扇售。 經(jīng)常有香客問我,道長嚣艇,這世上最難降的妖魔是什么承冰? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮食零,結(jié)果婚禮上困乒,老公的妹妹穿的比我還像新娘。我一直安慰自己贰谣,他們只是感情好娜搂,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冈爹,像睡著了一般涌攻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上频伤,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天恳谎,我揣著相機(jī)與錄音,去河邊找鬼憋肖。 笑死因痛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的岸更。 我是一名探鬼主播鸵膏,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怎炊!你這毒婦竟也來了谭企?” 一聲冷哼從身側(cè)響起廓译,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎债查,沒想到半個月后非区,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡盹廷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年征绸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俄占。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡管怠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缸榄,到底是詐尸還是另有隱情渤弛,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布碰凶,位于F島的核電站暮芭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏欲低。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一畜晰、第九天 我趴在偏房一處隱蔽的房頂上張望砾莱。 院中可真熱鬧,春花似錦凄鼻、人聲如沸腊瑟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闰非。三九已至,卻和暖如春峭范,著一層夾襖步出監(jiān)牢的瞬間财松,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工纱控, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留辆毡,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓甜害,卻偏偏與公主長得像舶掖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尔店,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容