SSH整合时执行hibernate查询报错:java.lang.ClassCastException: com.ch.hibernate.Department_$$_javassist_0 cannot be cast to javassist.util.proxy-阿里云开发者社区

开发者社区> 冬至饮雪> 正文

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信息了.

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

相关文章
【hibernate 执行方法未插入数据库】hibernate的save方法成功执行,但是未插入到数据库
今天做项目,碰上这个问题: hibernate的save方法成功执行,但是未插入到数据库。 Dao层代码: 1 @Override 2 public void save(T t) { 3 this.
815 0
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 7 章 查询_7.7. VALUES列表
7.7. VALUES列表 VALUES提供了一种生成“常量表”的方法,它可以被使用在一个查询中而不需要实际在磁盘上创建一个表。语法是: VALUES ( expression [, ...] ) [, ...] 每一个被圆括号包围的表达式列表生成表中的一行。
924 0
RDS SQL Server - 专题分享 - 巧用执行计划缓存之Single-used plans
# 背景引入 执行计划缓存是SQL Server内存管理中非常重要的特性,这篇系列文章我们探讨执行计划缓存设计中遇到的single-used plans问题,以及如何发现、如何定性和定量分析single-used plans带来的影响,最后我们使用两种方法来解决这个问题。 # 什么是Single-used Plans 要解释清楚什么是Single-used Plans,首先需要解释SQL语句
2041 0
AngularJs中,如何在render完成之后,执行Js脚本
AngularJs是Google开源的前端JS框架。使用AngularJs, 我们能够容易地、健壮的开发出类似于Gmail一样的单页Web应用。AngularJs这个新兴的MVC前端框架,具有以下特点: MVC, 模块化,自动化双向数据绑定,语义化标签、依赖注入等。
721 0
Hibernate查询,数据库中无数据正常,有数据出现java.lang.NullPointerException 空指针异常
hibernate执行表与表之间多对一的查询时,如果数据库中没有数据时,一切正常,一旦将数据插入到数据库中,查询的时候将会抛出空指针异常。以下是我的*.hbm.xml的配置 后来经过多方查证,需要在配置文件中的多对一的查询中加入Lazy="false". 需要修改的地方为: 但我有个疑问啊,lazy的默认就是false,不写的话就会报错,写上就不抛空指针异常,这是问什么呢??求证。
927 0
【hibernate 报错】No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer 【get和load的区别】
报错: 1 HTTP Status 500 - Could not write content: No serializer found for class org.hibernate.proxy.
1017 0
Hibernate中HQL语句查询指定字段值报错:ClassCastException: [java.lang.Object; cannot be cast to bean.PersonStatic
在有一次通过如下HQL语句进行查找相应字段时: String hql = "select sum(search),sum(geometry),sum(greedy), sum(graph),sum(number),sum(simulate),sum(combine),sum(structure) from PersonStatis ps where ps.
928 0
+关注
93
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载