开发者社区> 冬至饮雪> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SSH整合时执行hibernate查询报错:java.lang.ClassCastException: com.ch.hibernate.Department_$$_javassist_0 cannot be cast to javassist.util.proxy

简介:   今天在整合ssh三个框架时,有一个功能,是查询所有员工信息,且员工表和部门表是多对一的映射关系,代码能正常运行到查询得到一个List集合,但在页面展示的时候,就报异常了, java.lang.
+关注继续查看

  今天在整合ssh三个框架时,有一个功能,是查询所有员工信息,且员工表和部门表是多对一的映射关系,代码能正常运行到查询得到一个List集合,但在页面展示的时候,就报异常了,

java.lang.ClassCastException: com.ch.hibernate.Department_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy

  问题应该出在实体类Department上,然后我参照网上的解释,将Department.hbm.xml中class标签上加了一个lazy="false",再次运行,结果正常.

  推测原因,应该是我在查询员工Employee时,得到的department信息只是一个代理对象,而关闭了延迟加载后,就能查询得到一个真正的department对象.

  观察jar包,发现struts的jar包和hibernate的jar包中,都有一个javassist的jar包,将较低版本的删掉之后,也能运行正常.

   把lazy="false"删掉之后,执行联合查询时,查询emplotee的关联类department时,还是只能得到一个代理对象,这是我的hql语言是 String hql="from Employee"; 我们通过左外连接同时查询deaprtment,改为这个hql语句,String hql="from Employee e left outer join fetch e.department ",就可以查询到department信息了.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SSH项目,hibernate的查询操作出错org.hibernate.hql.ast.QuerySyntaxException
SSH项目,hibernate的查询操作出错org.hibernate.hql.ast.QuerySyntaxException
0 0
【SSH系列】一步步深入springmvc+商品列表查询demo
在前面的博文中,小编主要简单的介绍springmvc的体系结构、mvc模式的优缺点以及mvc框架,今天我们来继续学习springmvc的相关知识,在这篇博文中,小编讲解过springmvc的体系结构,在这个体系结构中,涉及到各种组件,小编主要简单介绍一下各种组件,以及他们的作用: a、前端控制器DispatcherServlet(不需要程序员开发) 作用:接收请求,响应结果,相当于转发器,中央处理器。
1126 0
Linux: SSH免密登录配置完了不生效
Linux: SSH免密登录配置完了不生效
0 0
Disconnected: No supported authentication methods available)FileZilla通过SSH连接Linux服务器( CentOS)
Disconnected: No supported authentication methods available)FileZilla通过SSH连接Linux服务器( CentOS)
0 0
Linux安装ssh以远程连接
Linux安装ssh以远程连接
0 0
【Linux技术专题系列】「必备基础知识」一起探索(SSH体系下的公私密钥的介绍和使用技巧)
【Linux技术专题系列】「必备基础知识」一起探索(SSH体系下的公私密钥的介绍和使用技巧)
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Javascript中的对象
立即下载
Javascript中的函数
立即下载
低代码开发师(初级)实战教程
立即下载