Hibernate HQL 一对多查询
来源:互联网 发布:分类信息群发软件 编辑:程序博客网 时间:2024/04/29 06:45
1、等值连接:
/** * 等值查询 查询出来的结构很差 */public List<Classes> queryClasses_Student_EQ(){Session session = sessionFactory.openSession();List<Classes> cList = session.createQuery("from Classes c, Student s where c.cid=s.classes.cid").list();session.close();return cList;}
2、内连接
/** * 内连接 这种结构也不好 */public List<Classes> queryClasses_Student_INNER(){Session session = sessionFactory.openSession();List<Classes> cList = session.createQuery("from Classes c inner join c.students").list();session.close();return cList;}
3、迫切内连接:
/** * 迫切内连接 */public List<Classes> queryClasses_Student_INNER_FETCH(){Session session = sessionFactory.openSession();List<Classes> cList = session.createQuery("from Classes c inner join fetch c.students").list();session.close();return cList;}
4、左外连接
/** * 左外连接 */public List<Classes> queryClasses_Student_LeftJoin(){Session session = sessionFactory.openSession();List<Classes> cList = session.createQuery("from Classes c left outer join c.students").list();session.close();return cList;}
5、迫切左外连接
/** * 迫切左外连接 */public List<Classes> queryClasses_Student_LeftJoin_fetch(){Session session = sessionFactory.openSession();String hql = "from Classes c left outer join fetch c.students";hql = "from Student s left outer join fetch s.classes c";List<Classes> cList = session.createQuery(hql).list();session.close();return cList;}
6、如果页面只需要某个属性(cname, sname)使用以下方法
·创建 JavaBen(ClassesView.java)
public class ClassesView {private String cname;private String cname;public ClassesView(String cname, String sname){this.cname = cname;this.sname = sname;}封装……}·在 HQLDao 中
public List<Classes> queryClasses_Student_Select(){ Session session = sessionFactory.openSession(); String hql = "select new cn.itcast.hiberate.sh.domain.ClassesView(c.cname,s.sname) " + "from Student s left outer join s.classes c"; List<Classes> cList = session.createQuery(hql).list(); session.close(); return cList; }
注意:因为“迫切连接”的结构和“带构造函数”的机构有冲突,所以两者只能取其一。
总结:
1、如果“页面上的数据”和“DB中的字段相差甚远”,利用带select 的构造器进行查询
2、如果页面上的数据和数据库中的字段相近,这是用迫切连接
3、如果采用“迫切链接”,from 后紧跟的就是结构主体。
4、如果多张表进行查询,找中间表。
0 0
- Hibernate HQL 一对多查询
- hql一对多查询
- hibernate中一对多关系hql条件查询
- HQL中的一对多查询
- HQL一对多条件查询
- HQL中的一对多查询
- hql语句:一对多查询
- grails hasMany一对多HQL查询问题
- hibernate HQL 分页 关联查询(一对多单向,多对一 双向,多对多)
- 【Hibernate九】HQL之多表查询(一对多和多对多)
- Java学习笔记之Hibernate-HQL多表查询一对多
- 在Hibernate执行一对多表查询的HQL语句,怎样循环打印出结果
- Hibernate一对多条件查询
- hibernate多表查询HQL
- hibernate多表查询HQL
- hibernate多表查询HQL
- hibernate多表查询HQL
- hibernate HQL多表查询
- 10.2做题——洛谷P1049装箱问题
- 平面图的最小割转最短路(点非常多)
- CF#321-B - Kefa and Company-贪心-
- UVALive 6432 Influence // 暴力dfs
- 寿司晚宴(dinner)
- Hibernate HQL 一对多查询
- 右值引用
- 程序设计基石与实践系列之C中的继承和多态
- JAVA爬虫Nutch、WebCollector的正则约束
- 网络管理Network
- 【leetcode】Best Time to Buy and Sell Stock II
- Anaconda python各模块简介
- HDU 1116 Play on Words(欧拉路径(有向图)+并查集)
- linux中对象文件的符号表symbols查看工具nm简介