论坛首页 Java企业应用论坛

spring+hibernate中的session问题

浏览 6863 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-27  
   有一个user表和一个address表,他们是一对多的关系,在user.getAddress()的时候,
   1.在hibernate中,对user查询后能得到地址的相关信息(前提是对user进行查询后session不能关   闭,否则也会和spring+hibernate中报一样的错)
   2.在spring+hibernate中就会报错,failed to lazily initialize a collection of role: com.bean.User.address, no session or session was closed,把user.hbm.xml中的lazy改成flase了就正常了,但把lazy改成flase了延迟加载就不起作用了,带了不必要的性能消耗,不知道这个问题怎么解决,请各位高手看看该怎么弄.配置文件如下:
user.hbm.xml
  <!--省略-->
  <set name="address"  table="address" lazy="true" inverse="true"  cascade="all">
    <key column="userid"/>
    <one-to-many class="com.bean.Address"/>
  </set>
<!--省略-->

address.hbm.xml
   <!--省略-->
   <many-to-one name="user" class="com.bean.User"  column="userid"/>
   <!--省略-->
   发表时间:2006-12-27  
这样的情况应该采用OpenSessionInView模式了吧。

比如Spring提供了一些工具可以让我们运用上OpenSessionInView,具体的实施办法可以搜索论坛或者google。
0 请登录后投票
   发表时间:2006-12-27  
Allen 写道
这样的情况应该采用OpenSessionInView模式了吧。

比如Spring提供了一些工具可以让我们运用上OpenSessionInView,具体的实施办法可以搜索论坛或者google。
OpenSessionInView在web.xml中也配置了,还是不行,搜了一下到是有这方面的问题,但都没有解决的,郁闷啊.
0 请登录后投票
   发表时间:2006-12-27  
如果你事先知道在页面需要用到某些关联对象,可以在查询时抓取好这些对象,象这样:
select u from User u left join fetch u.address where u.id = ...
可以抓取一方,也可以抓取多方的集合。这样可以将多次查询并为一次,也能提高效率。
0 请登录后投票
   发表时间:2006-12-28  
hibernate官方网站有关于OpenSessionInView的详细资料
0 请登录后投票
   发表时间:2006-12-29  
wtb 写道
hibernate官方网站有关于OpenSessionInView的详细资料
一定的好好看看啊
0 请登录后投票
   发表时间:2007-01-25  
Hibernate.initialize(user.getAddress())强制加载关联对象
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics