刚刚拿到一个hibernate框架,让开发个接口。
由于是两个表联合查询,只需要表里面的几个字段。
刚开始搞了个hibernate 映射文件,报错还没啥用就删了。
然后我就想着直接用sql 直接查,然后转实体类操作。
开始查是查出来了,也能按List<class> 这种返回到业务类,但是想拿出来处理的时候,就报类型转换的错
我还以为是数据库查出来的字段,类型跟实体类不匹配,我又把数据库字段都转换了一下类型。发现没有用。
然后百度搜索,前面几个都是用addEntity,我试了,也是会报类型转换异常。
然后就继续找,看到了这篇文章https://www.cnblogs.com/henuyuxiang/p/4273090.html
用sqlquery.setResultTransformer(Transformers.aliasToBean(WinxinOrderRecordPojo.class));这种办法处理。然后一试确实香。
就是设置字段类型有点麻烦,下面是我的代码部分,供参考
SQLQuery sqlquery = this.getSession().createSQLQuery(winxinOrderRecordhql.toString());
sqlquery.addScalar("patientname", Hibernate.STRING);
sqlquery.addScalar("status", Hibernate.STRING);
sqlquery.addScalar("inhospitalname", Hibernate.STRING);
sqlquery.addScalar("zjhm", Hibernate.STRING);
sqlquery.addScalar("zjlx", Hibernate.STRING);
sqlquery.addScalar("intwodeptname", Hibernate.STRING);
sqlquery.addScalar("jzsj", Hibernate.STRING);
sqlquery.addScalar("yjzzsj", Hibernate.STRING);
sqlquery.addScalar("yymc", Hibernate.STRING);
sqlquery.setResultTransformer(Transformers.aliasToBean(WinxinOrderRecordPojo.class));
return (List<WinxinOrderRecordPojo>)sqlquery.list();