2011年10月1日 星期六

[JPA] Object connect to DB data

Error Message

JPA OBJECT 會和 db 連結在一起

所以修改時取出物件到頁面 當 user 更動了資料

其實 db 裡的資料也已經被更動 JPA session 裡的資料也會一同更動

因此當 user submit 後 若我們要檢查 user 是否有更動資料

再去取一次 object 是比對不出來的

因為 db 內的資料已和被更動到和頁面上的資料一樣
(在還沒 commit 前是不會更動到 db 內的資料的)

因為實際上我們取到的會是 session 裡已經被更動到的資料
(類似 browser cache)


Solution

使用 entityManager.clear() 切斷 object 和 db 間的關係 (clear session)

但切斷關係的後 使用 lazy 的 attribute 會發生取不到的問題 (因為已對應不到db)

所以在 clear 前 要先把需要用的 attribute 的 promary key 取出存下

好在要使用時能去再 select 出來 塞回物件

沒有留言:

張貼留言