hibernate4 中的load找不到session

jinsong 2013-04-22 12:40:57
错误:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session

我已经设置了:
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>

@Transactional

使用getCurrentSession()
使用get()没有问题;
使用load就有问题

使用opentSession() 都没有问题;

求大神指导;

测试代码如下:
此处:getsession()为sessionFactory.getCurrentSession();的封装

public T load(Class<?> clazz, int id){
//return (T)sessionFactory.openSession().load(clazz,id); //没问题
return (T) getSession().load(clazz,id); //此处load有问题
//return (T) getSession().get(clazz,id); //没问题
}

...全文
120 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
babys 2013-04-22
  • 打赏
  • 举报
回复
如果你是在web环境中,可以用OpenSessionInView的filter或interceptor,也可以向楼上不使用懒加载,关键你用Load返回的代理对象如果在使用的时候Session已经关闭了,当然会报这个错.
  • 打赏
  • 举报
回复
你的映射文件配置呢 <many-to-one>或者<set> 中设置 lazy="false",默认是lazy="proxy"
jinsong 2013-04-22
  • 打赏
  • 举报
回复
我没有使用关系映射,只是单独的读取一个对象,如果使用filter或interceptor的话,感觉有点繁琐,此处如果我直接使用get()的话,不知道有没有什么不妥,我使用了二级缓存。

67,513

社区成员

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

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