首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring+hibernate中的session有关问题

2012-11-06 
spring+hibernate中的session问题有一个user表和一个address表,他们是一对多的关系,在user.getAddress()的

spring+hibernate中的session问题
   有一个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.User"  column="userid"/>
   <!--省略-->
1 楼 Allen 2006-12-27   这样的情况应该采用OpenSessionInView模式了吧。

比如Spring提供了一些工具可以让我们运用上OpenSessionInView,具体的实施办法可以搜索论坛或者google。 2 楼 linxiao 2006-12-27   Allen 写道这样的情况应该采用OpenSessionInView模式了吧。

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

热点排行