精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-01-25
由于有延迟加载的我问题,我使用OpenSessionInViewFilter来解决问题! 当我把tapestry自身的页面缓存禁用,OpenSessionInView可以正常使用,但是启用缓存就不能使用,报没有session或session关闭。在发布的时候,不可能禁用缓存,到底是为什么,这个怎么和缓存有关呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-01-25
singleSession 设为 true 吧。
|
|
返回顶楼 | |
发表时间:2006-01-25
当然跟缓存有关系了。没用过T4,不过根据原理也可以分析出来
OpenSessionInView是为了lazy load。为什么可以自动的lazy load,因为在整个request-response期间中保持着hibernate的session,hibernate会根据这个session去取lazy的数据。T4的缓存不可能去缓存hibernate的session,自然就出现找不到session的问题了。 |
|
返回顶楼 | |
发表时间:2006-01-25
引用 当然跟缓存有关系了。没用过T4,不过根据原理也可以分析出来
OpenSessionInView是为了lazy load。为什么可以自动的lazy load,因为在整个request-response期间中保持着hibernate的session,hibernate会根据这个session去取lazy的数据。T4的缓存不可能去缓存hibernate的session,自然就出现找不到session的问题了。 应该不会有这个问题. Open Session in view 是 per request. |
|
返回顶楼 | |
发表时间:2006-01-26
我也用tapestry4.0+hibernate3.0.5+spring1.2.6,打开页面缓存也没出现这个问题,我没设singleSession,它默认是true.
|
|
返回顶楼 | |
发表时间:2006-02-05
|
|
返回顶楼 | |
发表时间:2006-02-06
以前用过jdo,现在来用hibernate也老碰上LazyInitializationException这事,基本上也都糊里糊涂的解决了.
你的程序遇到的这个问题在我这儿和tapestry自身的页面缓存没关系,无论页面缓存禁用与否都是:no session or session was closed,从你的程序里看问题是: public String getTest2(); { Set set = (getVisitState();.getTry1();.getTry2s(););; List list = new ArrayList(set);; Try2 try2 = (Try2);list.get(0);; return try2.getTry2name();; } 从visit里拿出的对象用的是上个页面的session,是closed,像下面这样用就没问题了 public String getTest2(); { List list1 = (List);getManager();.getObjects(Try1.class);; Try1 try1 = (Try1);list1.get(0);; Set set = try1.getTry2s();; List list = new ArrayList(set);; Try2 try2 = (Try2);list.get(0);; return try2.getTry2name();; } 不知道你的需求是什么样的,我觉得hibernate有两级缓存了,这种对像不用放到visit里,带状态的(跟hibernate相关的)东西放到那里边,不知道要出什么事呢. |
|
返回顶楼 | |
发表时间:2006-02-06
谢谢gavin
下面这种方法是没有问题的,但是每一次都要多执行一条查询语句,不过现在我也只能这样了,嘿嘿!!! |
|
返回顶楼 | |
发表时间:2006-02-06
你把你所需要的数据先全部load出来(.getTry2s()), 然后在setVisit里面。
这样就能避免多query一次了。 |
|
返回顶楼 | |
发表时间:2006-02-08
dengyin2000 写道 你把你所需要的数据先全部load出来(.getTry2s()), 然后在setVisit里面。
这样就能避免多query一次了。 这样不就没有使用到lazy loading吗? |
|
返回顶楼 | |