亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Hibernate中重新附加分離對象的正確方法是什么?

在Hibernate中重新附加分離對象的正確方法是什么?

吃雞游戲 2019-10-15 10:04:05
我遇到一種情況,我需要將分離的對象重新附加到休眠會話,盡管會話中可能已經存在相同標識的對象,這將導致錯誤?,F在,我可以做兩件事之一。getHibernateTemplate().update( obj ) 當且僅當休眠會話中不存在對象時,此方法才有效。當以后需要時,會拋出異常,說明會話中已經存在具有給定標識符的對象。getHibernateTemplate().merge( obj ) 僅當休眠會話中存在對象時,此方法才有效。如果我以后使用該對象,則當我需要該對象進入會話時,將引發異常。在這兩種情況下,如何將會話附加到對象上?我不想使用異常來控制此問題的解決方案的流程,因為必須有一個更優雅的解決方案...
查看完整描述

3 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

如果您確定您的實體尚未被修改(或者如果您同意任何修改將丟失),則可以使用鎖定將其重新連接到會話。


session.lock(entity, LockMode.NONE);

它不會鎖定任何內容,但是會從會話緩存中獲取實體,或者(如果未在其中找到)從數據庫讀取實體。


當您從“舊”(例如HttpSession)實體導航關系時,防止LazyInitException非常有用。您首先要“重新附加”實體。


使用get也可能會起作用,除非您繼承映射時(繼承已在getId()上引發異常)。


entity = session.get(entity.getClass(), entity.getId());


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 697 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號