java.lang.IllegalStateException: Cannot call isReadOnlyBeforeAttachedToSession when isReadOnlySettin

最近在用SSH框架写一个物流项目,在开发过程中遇到如下异常

java.lang.IllegalStateException: Cannot call isReadOnlyBeforeAttachedToSession when isReadOnlySettingAvailable == true [bos.entity.bc.Staff#sos-0001]

起初以为是Fastjson在转化数据时与hibernate的关联查询导致死循环所致,沿着这条思路终未解决

于是只好粘贴异常信息到百度查找,发现并没有与之相关的解决方案,所以只好自行解决

苦恼了半天终于解决了该问题,闲话不多少,上方案

 

解决方案

             该异常是Hibernate懒加载异常所致

            <many-to-one name="staff" class="bos.entity.bc.Staff" fetch="select">
                 <column name="staff_id" length="32" />
            </many-to-one>

            在对应实体映射配置文件中,关闭懒加载即可如下

            <many-to-one name="staff" class="bos.entity.bc.Staff" fetch="select" lazy="false">
              <column name="staff_id" length="32" />
            </many-to-one>

 

总结

           后研究发现,这是hibernate懒加载的一个普遍异常

          凡表之间存在多对一关系,都需要在多方实体映射配置文件中关闭对应属性的懒加载,否则均会报以上异常

 

因为被这个异常搞得我太头疼了,网上也没有解决方法,特写此博客,希望遇到与我相同问题的朋友,都有迹可查!

 

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值