读书人

spring+hibernate中的session有关问题

发布时间: 2012-11-06 14:07:00 作者: rapoo

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())强制加载关联对象

读书人网 >软件架构设计

热点推荐