hibernate一对多出现failed to lazily initialize a collec

hibernate一对多出现failed to lazily initialize a collection of role异常!

1.这是关于延迟加载的问题
    <set name="news" inverse="true">            
           <key column="typeId"></key>           
           <one-to-many class="com.auj.sshdemo.bean.News"/>     
     </set>  
改成:
  <set name="news" inverse="true" cascode="all" lazy="false">            
           <key column="typeId"></key>           
           <one-to-many class="com.auj.sshdemo.bean.News"/>     
     </set>

cascode="all"
这也就使用了级联,代表在你查询主表的数据的时候,也去查询子表的数据。设置成all也就代表对主表的select,delete,update,save的时候,也要对进行相应的操作。在hibernate的session在假如以查询来讲,当你查询了主表的完成后,session关闭。这是字表的数据没有去数据库中查询。所以会报错!
lazy="false”
加上这个也就代表了非延迟加载,这样session也就不会关闭。


cascode的设置要根据需要使用,主要是考虑效率问题!
解决方案二:
<set name="news" inverse="true" cascode="all"  fetch="join">            
           <key column="typeId"></key>           
           <one-to-many class="com.auj.sshdemo.bean.News"/>     
     </set>
这样就会执行一条表连接语句,避免问题的出现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值