这个从字面上就可以看出:不能初始化,没有session。也就说主要原因是因为session关闭了。
在Hibernate中,<many-to-one.../>中的lazy默认为proxy。这样hibernate在数据库中查询数据时事不会把关联的
对象查出来的,而是保存一个获得该值得方法:getXxxx()。当我们需要使用这个值的时候,也就是使用getXxx()方法来
调用的时候,Hibernate就会利用这个方法从数据库中获取相应的数据。但是很不幸,我们的session早就关闭了。这
是因为Hibernate的懒加载策略,在Hibernate中是使用sessionFactory来管理session,我们每进行一次数据库操作时
都会新建一个session对象,当我们操作完成后,hibernate就会在dao层立即关闭该session。这样做就可以严格控制
session,避免出现低级错误。
对于这种错误,一般都会有三个方法可以解决。
1、把lazy设成false。这个是最简单的办法,个人认为也是比较笨的方法。因为这是在用效率作为代价。
2、使用OpenSessionInViewFilter。这种方法是将session交给servlet filter来管理,每当一个请求来之后就会开
启一个session,只有当响应结束后才会关闭。如下:
-
<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>
上面的配置文件时在web.xml中配置的。
3、将hibernate的抓起策略改为join。也就是是left join fetch或inner join fetch语法。就是在<many-to-one../>中配
置lazy="false" fetch="join"即可。如:
-
<many-to-onename="worker"lazy="false"fetch="join"class="com.paixi
分享到:
相关推荐
解决org.hibernate.LazyInitializationException: could not initialize proxy - no Session...
java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40 导致的原因: 在azkaban的server和executor中缺少一个叫derby.jar的包
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错误,同时...
7.注册如果发送邮件激活的方式出错(返回页面错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session) 8.禁止用户后不允许登录、发帖、回帖等 9.后台会员搜索中文名搜索乱码 ...
内涵jacob_1.14.3-x64.dll;jacob_1.14.3-64.jdk(maven地址);解决方法:Could not initialize class com.jacob.com.ComThread
NULL 博文链接:https://smartgwt.iteye.com/blog/1252268
之前编译安装的LNMP环境+phpmyamdin4.02的版本,今天突然出现这个问题:复制代码 代码如下:Fatal error: session_start(): Failed to initialize storage module: files (path: ) in /data/...大致意思是session会话...
在学java2的用户,不妨看看
主要介绍了Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案,需要的朋友可以参考下
解决:oracle_plsql连服务端时 Initialization error could initialize错误处理方法
D:\mysql-8.0.11-winx64\bin>mysqld --initialize-insecure --console D:\mysql-8.0.11-winx64\bin>mysqld --install mysql811 D:\mysql-8.0.11-winx64\bin>net start mysql811 D:\mysql-8.0.11-winx64\bin>mysql -u...
7.注册如果发送邮件激活的方式出错(返回页面错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session) 8.禁止用户后不允许登录、发帖、回帖等 9.后台会员搜索中文名搜索乱码 ...
如图,用管理员运行,在命令行窗口输入mysqld --initialize --console,执行初始化命令,出现了mysqld: Can’t create directory ‘D: ystem tool\mysql-8.0.19-winx64\Database’ (OS errno 2 – No such
* Description: This function is used to initialize the internals of uC/OS-II and MUST be called prior to * creating any uC/OS-II object and, prior to calling OSStart(). * * Arguments : none * * ...
// When building OkHttpClient, the OkHttpClient.Builder() is passed to the with() method to initialize the configuration OkHttpClient = RetrofitUrlManager.getInstance().with(new OkHttpClient.Builder...
Fatal error: session_start() [function.session-start]: Failed to initialize storage module: files (path: ) in C:\usr\phpMyAdmin\libraries\session.inc.php on line 75 I.更改服务器配置: 1、检查error.log...
监听COM口启动程序报错 Could not initialize class gnu.io.RXTXCommDriver异常 是因为需要在%JAVA_HOME%/jre/bin目录中添加rxtxParallel.dll、rxtxSerial.dll文件
以管理员权限打开cmd,然后进入E:\study\mysql-5.7.15-winx64\bin文件夹输入以下命令:mysqld --initialize (用于初始化mysql,MySQL会帮你自动进行初始化,例如生成data文件夹) 再输入:mysqld install(安装...
JSONArray.fromObject(map)报错:Could not initialize class net.sf.json.JsonConfig。ireport 需要高于2.1版本的包。于是就找了这些包。最后2.2.2适合
spring 总的概述。。。入门好教程~~~~~~~~~~~~~