关于Jdon框架和Hibernate的整合,Banq大哥请进
之前我发过一个帖子,见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大哥看下,我说的有没有错.谢谢啦~