org.hibernate.LazyInitializationException: could not initialize proxy - the owni

won1943 2011-10-24 09:30:07
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed

出现这个异常.

org.apache.jasper.JasperException: An exception occurred processing JSP page /SelfProjectExpert.jsp at line 26

23: haocai="",shebeiyiqi="",projectname="",content="",yusuan="",email="";
24: SelfProjectDAO selfDao=DAOFactory.getInstance().createSelfProjectDAO();
25: Selfproject selfProject=selfDao.getSelfProjectByID(id);
26: name=selfProject.getName();
27: sex=selfProject.getSex();
28: xueyuan=selfProject.getXueyuan();
29: xuehao=selfProject.getXuehao();

这是一段嵌在jsp页面的代码:

><%
int id = Integer.parseInt(request.getParameter("id"));
System.out.println("id"+id);
String name="",sex="",xueyuan="",xuehao="",zhuanye="",nianji="",tel="",qq="",daoshi="",canyuzhe="",shiyanshi="",
haocai="",shebeiyiqi="",projectname="",content="",yusuan="",email="";
SelfProjectDAO selfDao=DAOFactory.getInstance().createSelfProjectDAO();
Selfproject selfProject=selfDao.getSelfProjectByID(id);
name=selfProject.getName();
sex=selfProject.getSex();
xueyuan=selfProject.getXueyuan();
xuehao=selfProject.getXuehao();
zhuanye=selfProject.getZhuanye();
nianji=selfProject.getNianji(); %>

Selfproject中 integer型自增id是主键

id从上一个页面传递过来

我搜了搜文章 都说是修改 many-to-one什么的 但是我这个表暂时没有配置这个项 我觉得就是根据id查表啊 为什么不行呢?


public Selfproject getSelfProjectByID(Integer id){
try{Session s=HibernateUtil.currentSession();
HibernateUtil.beginTransaction();
Selfproject selfproject=(Selfproject)s.load(Selfproject.class, id);
HibernateUtil.commitTransaction();
HibernateUtil.closeSession();
return selfproject;
}catch(HibernateException e){
log.fatal(e);
}
return null;


这不是 selfproject Return回来了吗 为啥不行呢 大哥们 帮帮忙吧..

...全文
250 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kouyiSC 2011-10-24
  • 打赏
  • 举报
回复
<!-- 配置spring管理session
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
褚金辉 2011-10-24
  • 打赏
  • 举报
回复
同意楼上..
uastation 2011-10-24
  • 打赏
  • 举报
回复
延迟加载问题..
试一下用:

s.get(Selfproject.class, id);

s0s0s0s 2011-10-24
  • 打赏
  • 举报
回复
HibernateUtil.beginTransaction();
Selfproject selfproject=(Selfproject)s.load(Selfproject.class, id);

Hibernate.initialize(selfproject)

HibernateUtil.commitTransaction();
HibernateUtil.closeSession();
return selfproject;
won1943 2011-10-24
  • 打赏
  • 举报
回复
嗯 麻烦您了 谢谢!
kouyiSC 2011-10-24
  • 打赏
  • 举报
回复
http://javacrazyer.iteye.com/category/114998?show_full=true
这里详细告诉你了 怎么用openSessionInView,用了openSessionInView就不需要手动关闭session了吧。HibernateUtil.closeSession();这句应该不要把。

不全是配置的问题啊。。改了配置还要改改你的代码看看符不符合配置啊。。。。
won1943 2011-10-24
  • 打赏
  • 举报
回复
9楼的朋友 您说的 是把那句话加入到哪里呢? 加入在jsp页面之内的代码吗?
won1943 2011-10-24
  • 打赏
  • 举报
回复
楼上的朋友 谢谢你的热心帮助 可是配置上之后 就很干脆的打不开 页面了

我的Web.xml里面还配置了一个 过滤字符编码的filter 应该不怪它吧

而且我的Selfproject.hbm,xml哩确实 没有set标记 等 延迟加载的设置

不知道怎么办了,也许过几天就找到办法了

太愁了 编这么个简陋的小东西 都费这么大力气 真伤自尊啊哭
kouyiSC 2011-10-24
  • 打赏
  • 举报
回复
放到web.xml 中
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

还有就是你确保你的hibernate配置文件中,没有set标记以及一对多,多对一的延迟加载配置。。?
s0s0s0s 2011-10-24
  • 打赏
  • 举报
回复
Hibernate.initialize(selfproject)
won1943 2011-10-24
  • 打赏
  • 举报
回复
哎呀 救命啊 配置上那个东西之后 所有的页面都 提示错误
resource is not available
won1943 2011-10-24
  • 打赏
  • 举报
回复
把配置代码 放到Web.xml就可以吗
lijing0511 2011-10-24
  • 打赏
  • 举报
回复
....

[Quote=引用 5 楼 kouyisc 的回复:]

这个org.springframework.orm.hibernate3.support.OpenSessionInViewFilter是hibernate的包啊。不是spring的啊。。。和你有没有spring没有关系
[/Quote]
kouyiSC 2011-10-24
  • 打赏
  • 举报
回复
这个org.springframework.orm.hibernate3.support.OpenSessionInViewFilter是hibernate的包啊。不是spring的啊。。。和你有没有spring没有关系
won1943 2011-10-24
  • 打赏
  • 举报
回复
谢谢1楼2的帅哥啊
可是 还是出同样的提示 苦恼

3楼的朋友,这样的话是要 引入包 放到lib下面吗 我是Struts+Hibernate的框架 没用spring啊

67,513

社区成员

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

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