zoukankan      html  css  js  c++  java
  • Hibernate2延迟加载问题

    因为项目历史较久,一直使用的是hibernate2框架。这几日在对原先系统增加延迟加载时,发现总是报如下错误:

    ERROR LazyInitializationException:? - Failed to lazily initialize a collection - no session or session was closed 

    原本这不是一个麻烦的问题,但是因为已经使用了OSIV模式,加入了OpenSessionInViewFilter,所以更是感觉奇怪。经过研究和搜索,发现有多种原因会导致该异常。现总结如下:

    1. 没有使用OSIV模式。关于OSIV模式可以搜索到很多内容。

    2. 使用了OSIV,但是初始化配置文件时,同时使用了ContextLoadPlugin与ContextLoadListener,会导致存在两个session。可参考Robbin的一篇帖子

     http://www.iteye.com/topic/15057

    3. 使用了OSIV。对于关联关系,例如一对多(A has a set of B)关系。在获取A后,调用了evict(A),会导致之后使用B进行延迟加载时可能出错(前提:Casacde.Evict)。原因是A被evict后,B会被级联,从原session上detach,从而导致hibernate找不到session去做延迟加载。

  • 相关阅读:
    21.面向对象:多态与多态性、面向对象进阶:内置方法,反射。异常处理
    mysql 复习
    Python之math模块
    mysql数据类型转换
    Remmina
    JWT校验流程源码
    JWT签发token
    elasticsearch使用
    Flask基础
    初识Flask
  • 原文地址:https://www.cnblogs.com/daition/p/2046425.html
Copyright © 2011-2022 走看看