`
Franciswmf
  • 浏览: 796987 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

could not initialize proxy - no Session

 
阅读更多
hbm.xml配置如下:
  <class table="T_Orgnization" name="com.scriptguy.oa.model.Orgnization" >
    <id name="id">
      <generator class="native"/>
    </id>
    <property name="name"/>
    <property name="sn"/>
    <property name="description"/>
    <many-to-one lazy="false" column="pid" name="parent"/>
    <set lazy="false" inverse="true" name="children">
      <key column="pid"/>
      <one-to-many class="com.scriptguy.oa.model.Orgnization"/>
    </set>
  </class>
DAO的实现(继承自HibernateDaoSupport):
public class OrgManagerImpl extends HibernateDaoSupport implements OrgManager {

public Orgnization findOrg(int orgId) {
// Session session = (Session)this.getHibernateTemplate().getSessionFactory().openSession();
// Orgnization org = (Orgnization)session.load(Orgnization.class, new Integer(orgId));
// System.out.print(org.getDescription());
// session.close();
// return org;
return (Orgnization)this.getHibernateTemplate().load(Orgnization.class, orgId);
}



}
那么我在客户端调用这个DAO的findOrg(int orgId) 时,得到的只是一个Orgnization的代理类,hibernate并没有发出sql语句,出现org.hibernate.LazyInitializationException,提示could not initialize proxy - no Session。

导致异常的原因:
     使用HibernateTemplate的save、load等方法时,它的Session管理策略是:打开session,进行相关操作,默认使用lazy加载结果,不会发出sql语句,返回的是代理类
然后关闭session,此时你得到了一个Orgnization的代理类,如果你要调用Orgnization实例的getter方法,那么它就会去实际加载Orgnization对象,发出sql语句,可此时session已经关闭,因此会抛出异常,提示ould not initialize proxy - no Session。

解决方案:
     一、使用OpenSessionInView
在web.xml中添加过滤器,代码如下:
<filter>
     <filter-name>hibernateFilter</filter-name>
     <filter-class>
          org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
     </filter-class>
</filter
<filter-mapping>
     <filter-name>hibernateFilter</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>

二、更改查询策略:
  <class table="T_Orgnization" name="com.scriptguy.oa.model.Orgnization" lazy="false">
    <id name="id">
      <generator class="native"/>
    </id>
    <property name="name"/>
    <property name="sn"/>
    <property name="description"/>
    <many-to-one column="pid" name="parent"/>
    <set lazy="true" inverse="true" name="children">
      <key column="pid"/>
      <one-to-many class="com.scriptguy.oa.model.Orgnization"/>
    </set>
  </class>
分享到:
评论

相关推荐

    S2S3H3整合以及泛型Dao与Service封装

    2.2.3.1+spring-framework-3.1.0+hibernate-distribution-3.6.8+JSON+MySQL+Annotation,并且对Dao和Service进行了封装,内含.jar包,并且解决了一对多双向关联的could not initialize proxy - no Session错误,同时...

    集成spring的hibernate懒加载

    当你尝试在Controller层或者视图层访问懒加载的属性时,如果Session已经关闭("no Session..."错误),就会抛出`org.hibernate.LazyInitializationException`。这是因为懒加载的代理对象需要Session来执行数据库查询...

    基于SSH框架的BBS论坛JavaEE项目源码

    7.注册如果发送邮件激活的方式出错(返回页面错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session) 8.禁止用户后不允许登录、发帖、回帖等 9.后台会员搜索中文名搜索乱码 ...

    Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

    标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...

    Plsql 12连接Oracle时出现Could not initialize oci.dll解决方案 oracle 客户端

    在使用PL/SQL Developer 12连接Oracle数据库时,可能会遇到“Could not initialize oci.dll”这样的错误提示。这个错误通常表明系统无法找到或正确加载Oracle客户端的oci.dll库文件,这是Oracle Instant Client的一...

    JAVA错误文档[归纳].pdf

    7. **Action的返回方法出错,could not initialize proxy - no Session** 这可能是在Hibernate操作中没有正确初始化Session。确保在访问数据库之前已打开Session,并在完成后关闭。 8. **查询数据出现乱码问题** ...

    Hibernate配置常见错误

    错误表现:在Session关闭后尝试访问懒加载属性,抛出“org.hibernate.LazyInitializationException: could not initialize proxy - no Session”异常。 解决方案:理解并合理使用Open Session in View(OSIV)模式...

    oracle_plsql连服务端时 Initialization error could initialize错误处理方法

    解决:oracle_plsql连服务端时 Initialization error could initialize错误处理方法

    Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案

    在使用PL/SQL Developer这款强大的Oracle数据库管理工具时,有时可能会遇到“Could not initialize oci.dll”的错误提示,这通常是由于应用程序与Oracle客户端组件之间的兼容性问题导致的。本文将详细介绍如何解决这...

    java开源论坛jeebbs系统源码包

    7.注册如果发送邮件激活的方式出错(返回页面错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session) 8.禁止用户后不允许登录、发帖、回帖等 9.后台会员搜索中文名搜索乱码 ...

    java串口所需依赖dll文件合集

    监听COM口启动程序报错 Could not initialize class gnu.io.RXTXCommDriver异常 是因为需要在%JAVA_HOME%/jre/bin目录中添加rxtxParallel.dll、rxtxSerial.dll文件

    解决hbase client在windows环境下报NoClassDefFound问题

    解决hbase client在windows环境下报Could not initialize class org.fusesource.jansi.internal.Kernel32的问题,把jar包放入hbase client的lib包下,重新运行hbase.cmd shell即可

    jacob_1.14.3.rar

    内涵jacob_1.14.3-x64.dll;jacob_1.14.3-64.jdk(maven地址);解决方法:Could not initialize class com.jacob.com.ComThread

    ezmorph-1.0.6.jar

    缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig 使用json时候将会用到的一个jar包,发现这个包在网上提供的比较少.缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig ...

    linux上实现视频截图

    在Linux操作系统上实现视频截图是一项常见的任务,尤其对于开发者来说,可能需要在处理多媒体内容时进行这样的操作。这里我们将深入探讨如何使用JavaCPP库在32位Linux环境下完成这一目标。 JavaCPP是一个强大的Java...

    instantclient_11_2.zip

    Could not initialize "D:\app\Happy\product\11.2.0\dbhome_1\bin\oci.dll" Make sure you have the 32 bits Oracle Client installed. OracleHomeKey: OracleHomeDir: D:\app\Happy\product\11.2.0\dbhome_1 ...

    derby.jar 。。

    java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40 导致的原因: 在azkaban的server和executor中缺少一个叫derby.jar的包

    mysql第一次安装成功后初始化密码操作步骤

    在这种情况下,运行`mysqld --initialize-insecure --user=mysql`,这会创建一个无密码的用户。 6. **登录并修改默认密码**: 打开新的命令提示符,输入`mysql -u root -p`,然后输入之前生成的随机密码。登录成功...

    WINSOCK坏了 winsockfix

    错误消息“unable to initialize windows sockets interface error code 0”表明Winsock初始化失败,错误代码0通常表示系统级的错误,可能是由于Winsock配置出错、相关动态链接库(DLL)文件损坏、网络驱动程序冲突...

Global site tag (gtag.js) - Google Analytics