hiberante的update失敗問題

2021-05-21 21:23:58 字數 376 閱讀 5223

上面就是今天在調程式的時候丟擲的hibernate的bug,在網上搜了很多,但是最終的解決方案並不使用,因為專案中hibernate的一些細節已經被封裝了,不能使用session.***;

最後請教別人才得到解決的,原來在hibernate更新的時候是需要與快取中物件的位址進行對比的,看看是不是同乙個物件。乙個簡單的例子

updatemethod(object old, object new)

更新的時候,在hibernate的updateentity(object old),這裡應該使用快取中的object物件,這樣才不會發生位址的改變。如果使用new出來的新物件,你會發現其實它與快取中的物件是不一樣的,即使它們的所有屬性都相同。關於兩者的位址上的差異,可以看物件後面@符合後面的數字。

Hiberante中LAZY的疑惑

使用者user與role,resource關聯都是lazy,而使用spring security時,使用者登陸成功需要預先取得user的所有許可權資源,專案的寫法是 listuserlist userdao.find select distinct u from user u left join f...

SQLSERVER中 多表鏈結的UPDATE 方法

錯誤方式 update 歷史庫存 inner join 平均單價 on 歷史庫存.產品編號 平均單價.產品編號 set 歷史庫存.期末金額 round 平均單價.領用平均單價 歷史庫存.期末數量,0 正確方式 update 歷史庫存 set 歷史庫存.期末金額 round 平均單價.領用平均單價 歷...

Hiberante中的QBC檢索方式

qbc就是query by criteria qbc是hibernate提供的幾種檢索方式之一。一 這裡先小做乙個總結 hibernate檢索物件的方式有哪些呢?1 導航物件圖檢索方式。根據已經載入的物件,導航到其他物件。比如 對於已經載入的班級物件class1.呼叫它的getstudents 方法...