JPA OBJECT 會和 db 連結在一起
所以修改時取出物件到頁面 當 user 更動了資料
因此當 user submit 後 若我們要檢查 user 是否有更動資料
再去取一次 object 是比對不出來的
(在還沒 commit 前是不會更動到 db 內的資料的)
因為實際上我們取到的會是 session 裡已經被更動到的資料
(類似 browser cache)
Solution
使用 entityManager.clear() 切斷 object 和 db 間的關係 (clear session)
但切斷關係的後 使用 lazy 的 attribute 會發生取不到的問題 (因為已對應不到db)
所以在 clear 前 要先把需要用的 attribute 的 promary key 取出存下
好在要使用時能去再 select 出來 塞回物件
沒有留言:
張貼留言