關於Jdon框架和Hibernate的整合,Banq大哥請進

frogprince發表於2009-08-08
之前我發過一個帖子,見http://www.jdon.com/jivejdon/thread/36736.html
弄了N久,終於弄明白了.
問題是could not initialize proxy - no Session,我一直以為是CloseSessionInViewFilter出了問題,導致還沒到View層Session就關閉了,後來發現不是這個原因,真正的原因是Jdon的快取和Hibernate的懶載入一起用才發生了錯誤.
說明:
一對多的關聯.
第一個請求我取出"一"的時候,"一"中的多是沒有從資料庫中載入的,然後顯示到頁面,之後CloseSessionInViewFilter把這個Session給關了,還沒完,同時Jdon的快取機制將這個"一"給快取了.
接下來第二個請求我要顯示詳細的"一",也就是說還要取出這個"一"中的"多",我getService(),然後
Big big=service.getBig(id)
再然後我還要裡面的"多"
Smalls smalls=big.getSmalls();
問題出來了could not initialize proxy - no Session.
問題就在於這個big物件是從Jdon的快取中得到的,Jdon並沒有去查資料庫,因為Jdon的快取中有,於是返回了big,但是當我getSmalls()是就一定會報錯了,因為這個big中根本就沒有smalls啊,只是個代理.
然後我就查Jdon的使用手冊,在Model中設定
setCacheable(false);
之後問題就解決了.
我沒有用到Jdon的CRUD功能.用到了分頁查詢.
我現在想的是,用了Hibernate就不能Jdon自帶的快取了嗎?

Banq大哥看下,我說的有沒有錯.謝謝啦~

相關文章