文章一:

1.用hql语句

`

String hql="select student.id, student.name ,class.name from student映射实体类名 as student , class映射实体类名 as class where class.id = student.classid ";

`

2.用本地SQL语句

`

String sql="select student.id, student.name, class.name from student join class on class.id = student.classid ";

SQLQuery query=HibernateSessionFactory.getSession().createSQLQuery(sql);

`

也可以进行查询

返回类型为数组。

文章二:

           Hibernate 是JDBC的轻量级封装,一款杰出的ORM框架。通过它,可以建立数据表与表对象间的联系。
Hibernate的查询可通过HQL 和Criteira实现。本文仅展示用HQL实现多表查询,并针对返回的结果集进行对象封装。 如果我们在Hibernate中需要查询多个表的不同字段,那么如何来获取Hibernate多表查询的结果呢?有两种方式:

1、 利用Hibernate重写的List,从Obeject[ ]中取各个字段分别转化成对应类型,如下:

Java代码:

`

Query q = session.createQuery(" select members, classInfo.className " +

" from Members members, ClassInfo classInfo " +

" where members.level = classInfo.classCode ");

List result = q.list();

Iterator it = result.iterator();

while (it.hasNext()) {

Object[] tuple = (Object[]) it.next();

Members members = (Members) tuple[ 0 ];

String className = (String) tuple[ 1 ];

}

`

这是获取Hibernate多表查询的结果的最常用的方式,利用Hibernate为了实现懒加载重写所有Collection接口实现。

2、构造自己的复合类型,如下:

Java代码:

`

Query q = session.createQuery

(" select new ${path}.NewMembers(members, classInfo.className) " +

" from Members members, ClassInfo classInfo " +        

" where members.level = classInfo.classCode ");

Query q = session.createQuery

(" select new NewMembers(members, classInfo.className)

" + " from Members members, ClassInfo classInfo " + "

where members.level = classInfo.classCode ");

`

当然我们需要有一个NewMembers类和相应的构造方式。

需要特别指出的是,定义的复核类型NewMembers务必要实现java.io.Serializable接口,定义相应的构造方法:一个默认不带参数的,一个根据需要带参数的(通常是全参,呵呵,因为本身成员变量就是量身定制);此外,在使用中,发现必须指定自定义类型的完整类名${path}.NewMembers,${path}为NewMembers的包名。

文章三

学习好文:Hibernate中的HQL的基本常用小例子,单表查询与多表查询

http://blog.csdn.net/starjuly/article/details/52319921

hql join的更多相关文章

  1. 关于hql一些不常见但好用的技巧(个人总结)

    最近一直在用spring-data-jpa这个东西,感觉方法上注解hql语句已经是很常用的方法了, 有一些关于hql的经验分享一下: 一.hql的join hql的优势就是直接的关联关系嘛,但是通过h ...

  2. Hive Essential (4):DML-project,filter,join,union

    1. Project data with SELECT The most common use case for Hive is to query data in Hadoop. To achieve ...

  3. HQL语句中的join fetch

    from Paper as paper join fetch paper.authors as authors where authors.id='xxxx'; from Paper as paper ...

  4. Hibernate--------八大类HQL查询集合

    Hibernate的   八大类HQL查询集合 Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实 ...

  5. Hibernate之HQL查询的一些例子

    Hibernate配备了一种非常强大的查询语言,就是HQL(hibernate query language),HQL看上去很像sql,但只是语法结构上相似,HQL是一种面向对象的查询,他可以理解继承 ...

  6. Hibernate —— HQL、QBC检索方式

    一.HQL 检索方式 以双向的一对多来测试 HQL 检索方式.以 Department 和 Employee 为例. 建表语句: CREATE TABLE department ( dept_id ) ...

  7. HQL常用的查询语句

    摘录自某人,比较有用,比较全. // HQL: Hibernate Query Language. // 特点: // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用. // ...

  8. [转]hql 语法与详细解释

    HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...

  9. hibernate中HQL多对多的查询

    现有三张表 TLXPURCHASE.采购事项审批表,TLXPURCHASEACTIVITY.采购招标活动对应表,TLXACTIVITY.招标活动表,采购事项审批表和采购活动表是多对多关系.java中定 ...

随机推荐

  1. 百度网盘不能绑定QQ

    一定要等!!!进度条!! 等全部加载完再点就可以了. 不然的话点关联账号的话会直接跳回个人信息页面. over. 百度账号(百度网盘)绑定QQ账号的页面为什么打不开 总会跳转到个人信息界面,和没点一样 ...

  2. python3----基础函数的参数是可变参数,将传进来的参数转成列表

    def myFun(*argments): values = [x for x in argments] print(values) myFun(1,2,3,4,5,6) result: [1, 2, ...

  3. java打开后台程序

    try{ String cmds="java -version"; Process p = Runtime.getRuntime().exec(cmds); int exitVal ...

  4. 如何在Java的Filter中注入Service???

    今天在做用户使用cookie自动登录的时候,发现在LoginFilter中读取到cookie以后要进行查询数据库然后进行用户名和密码的比对,查询数据库肯定要用到Service和Dao,一开始我以为在s ...

  5. jqGrid单元格编辑配置,事件及方法

    转自 http://blog.csdn.net/xueshijun666/article/details/18151055 // var ret = $("#in_store_list_de ...

  6. 【BZOJ2325】[ZJOI2011]道馆之战 线段树+树链剖分

    [BZOJ2325][ZJOI2011]道馆之战 Description 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中的每一个冰块都只能经过 ...

  7. 网络摄像机进行互联网视频直播录像方案的选择,EasyNVS or EasyCloud or EasyGBS?

    背景需求 互联网视频直播越来越成为当前大势:直播的需求往往都伴随在录像的需求,对于录像,不同的场景又有不同的方案选择: 本篇博客将会介绍对应的几种录像方案,可以帮助有互联网录像需求的用户进行对应的录像 ...

  8. MySQL多实例启动停止

    原文地址:http://wolfword.blog.51cto.com/4892126/1241304/ 说明:本实验以MySQL 5.1为例来实验. 1.安装MySQL 5.1 yum instal ...

  9. CSS3选择器:nth-child与:nth-of-type区别

    一.:nth-child 1.1 说明 :nth-child(n)选择器匹配属于其父元素的第N个子元素,不论元素的类型.n可以是数字.关键词或公式. 注意:如果第N个子元素与选择的元素类型不同则样式无 ...

  10. RabbitMQ_消息队列基本使用_2

    简介 RabbitMQ:接受消息再传递消息,可以视为一个“邮局”. 发送者和接受者通过队列来进行交互,队列的大小可以视为无限的,多个发送者可以发生给一个队列,多个接收者也可以从一个队列中接受消息. p ...