标签:
在做 图片上传 相关实体保存时,出现了该错误。
相关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