dao类中生成的方法没有关闭session啊!怎么会提示Session was closed

lzt2008 2008-11-05 04:07:30
两边的多对多配置
<set name="rights" table="rightsOfRoles" order-by="rightsId asc" >
<key column="roleId" />
<many-to-many lazy="false"
class="com.clientRelation.pojo.Rights"
column="rightsId" />
</set>
<set name="roles" table="rightsOfRoles" inverse="true" >
<key column="rightsId" />
<many-to-many lazy="false"
class="com.clientRelation.pojo.Roles"
column="roleId" />
</set>
异常:
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:60)
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
com.clientRelation.pojo.Roles$$EnhancerByCGLIB$$f9a2bdca.getRoleName(<generated>)
com.clientRelation.action.LoginAction.doLogin(LoginAction.java:60)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.clientRelation.filter.SetCharacterEncoding.doFilter(SetCharacterEncoding.java:29)

==》dao类中生成的方法没有关闭session啊!怎么会提示Session was closed
...全文
207 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaAlpha 2009-06-24
  • 打赏
  • 举报
回复
我的也是这个问题,查了老半天了。还没解决呢
ZA_cameron 2008-11-05
  • 打赏
  • 举报
回复

<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


从网上考的,你自己试试对不
ZA_cameron 2008-11-05
  • 打赏
  • 举报
回复
都跟你说得很清楚了:用penSessionInViewFilter撒,只需要在配置文件里配下就行,延迟加载可以全开
lzt2008 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ZA_cameron 的回复:]
你只把集合级别的延迟加载关了,类级别的还是开着的
[/Quote]
不延迟加载我不能取出关联的表的数据
ZA_cameron 2008-11-05
  • 打赏
  • 举报
回复
你只把集合级别的延迟加载关了,类级别的还是开着的
SmallFishZhang 2008-11-05
  • 打赏
  • 举报
回复
spring中的调用封装的方法,好像会自动关掉
lzt2008 2008-11-05
  • 打赏
  • 举报
回复
我的意思是:
the owning Session was closed
我要的值还没取出来呢
还有他报错
org.hibernate.LazyInitializationException
什么意思。我没有延迟加载啊
hl_ghost 2008-11-05
  • 打赏
  • 举报
回复
HibernateTemplate会自动关闭session的。
ZA_cameron 2008-11-05
  • 打赏
  • 举报
回复
lz用的是不是spring的getTempletHibernate().XXX(),spring好像自动关掉的,
可以用spring内置的openSessionInViewFilter解决,或者自己写个过滤器,再有你把lazy设置成类级别的试试,
总之代码没看到,只能猜啦
lzt2008 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lvzhu18 的回复:]
LoginAction.java中获得session用的是什么方法,如果用的getSession(),改为openSession()试试。
[/Quote]
是框架做的用的HibernateTemplate
lvzhu18 2008-11-05
  • 打赏
  • 举报
回复
LoginAction.java中获得session用的是什么方法,如果用的getSession(),改为openSession()试试。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧