hibernate关于hql的左外连接查询
2016-07-22 10:24
393 查看
左外连接查询
最近小弟遇到写hql的左外连接查询,是关于按照sql语句写出来的始终出错,然后百度上面找方法,我的查询在实体映射文件里面是没有配关系的,只是在两张表里面都存在相同的字段罢了,网上的教程说,在实体映射文件配置什么什么关系的,在我这里来好像反而不够用了,然后就各种找错,最后终于弄出来了.小弟我也刚毕业,也许还有更好的方法,但是我实在是没有找到,就只有先将就着这样用了!
废话不多说,下面是代码!!!
关系表
Supplier -- 供应商 SupplierType -- 供应商类别
supId 供应商编号 typeId 供应商类别编号
supName 供应商名称 typeName 供应商类别名称
supPhone 供应商电话 typeBak 供应商备注
supAddress 供应商地址
typeId
供应商类别编号
supBak 供应商备注
注:两张表没有配置级联关系,只存在一个相同的typeId属性
hql语句:
String hql = " select sup.supId,sup.supName,sup.supPhone,sup.supAddress,type.typeId,type.typeName
as supBak from Supplier as sup,SupplierType as type
" +
" where sup.typeId = type.typeId and sup.typeId = ?";
List<Object> list = getCurrentSession().createQuery(hql).list();
如果要映射到供应商上面讲供应商类别名称显示出来 可以给type.typeName as supBak这样查出来的数据就是Object类型的数据,
如果不在供应商一起显示出类别名称,就不用type.typeName as supBak,但是查出来的数据依然是Object类型的,需要在外部强转成相应的类型即可!
List<Supplier> reslist=new ArrayList<Supplier>();
if(list != null && list.size() > 0){
for (Object d : list) {
Object[] objs = (Object[])d;
Supplier sup = new Supplier((int)objs[0],(String)objs[1],(String)objs[2],(String)objs[3],(int)objs[4],(String)objs[5]);
reslist.add(sup);
}
}
如此便返回了一个相应的对象集合,将类别名称也封装进了供应商当中,页面可以直接通过supplier.supBak显示出供应商类别的名称
虽然感觉漏洞百出,但是效果基本上出来了,如果有大神知道更好的方法,请告诉我一下,谢谢!小弟也刚出道,啥都不懂,望大家指点,互相进步!!!
相关文章推荐
- sql2008 hql语句翻译过来的分页语句介绍
- MySQL 多表查询实现分析
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- Struts2+Hibernate实现数据分页的方法
- Hibernate环境搭建与配置方法(Hello world配置文件版)
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- 详解Java的Hibernate框架中的注解与缓存
- 浅析Java的Hibernate框架中的继承关系设计
- Java的Hibernate框架中的继承映射学习教程
- Hibernate实现批量添加数据的方法
- Hibernate4在MySQL5.1以上版本创建表出错 type=InnDB