码迷,mamicode.com
首页 > Web开发 > 详细

S2JH Hibernate Lazy抓取策略--could not initialize prox

时间:2015-11-10 12:36:13      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

    在做 图片上传 相关实体保存时,出现了该错误。

   相关Entity 

    @OneToMany(mappedBy = "objectSid", cascade = CascadeType.ALL, orphanRemoval = true)
    @OrderBy("orderIndex desc")
    public List<ObjectR2Pic> getShopPagePics() {
        return shopPagePics;
    }

   Controller

@Override
    @MetaData("保存")
    public HttpHeaders doSave() {
        List<ObjectR2Pic> shopPagePics = bindingEntity.getShopPagePics();
        if (!CollectionUtils.isEmpty(shopPagePics)) {
            for (ObjectR2Pic shopPagePic : shopPagePics) {
                shopPagePic.setObjectSid(bindingEntity.getId());
                shopPagePic.setObjectType(ObjectPicTypeEnum.SHOP_PAGE_PIC);
            }
        }
        return super.doSave();
    }

程序在执行到 

List<ObjectR2Pic> shopPagePics = bindingEntity.getShopPagePics();

总是得不到前端的图片信息,于是接下来就报异常  

org.hibernate.LazyInitializationException:could not initialize proxy - no Session

经调查:这是由于Hibernate 延迟初始化导致的错误,此时,该代理类实例或代理集合处于游离状态,此时对他进行初始化,就会报该错误。有的网友提出,设置 fetch抓取策略lazy 懒模式为true,不过也有网友提出这样设置对内存,及性能不友好。

解决: 经过仔细调查S2JH 的父类,原来 @S2JH 已经解决了 该问题,就是在使用之前,预先初始化的lazy集合。

在Controller中追加:

    @Override
    protected void setupDetachedBindingEntity(Long id) {
        bindingEntity = getEntityService().findDetachedOne(id, "shopPagePics");
    }

个人Hibernate的持久化理解还是不到位,如果有高人看到,希望能在评论区指点一二。对于文章的浅薄之处,请多多批评。

技术分享

S2JH Hibernate Lazy抓取策略--could not initialize prox

标签:

原文地址:http://my.oschina.net/GoogleFan/blog/528432

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!