文章一:

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. 用Python和py2app写独立的Mac OS X 应用

    文/lovexiaov(简书作者)原文链接:http://www.jianshu.com/p/afb6b2b97ce9著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 前提 创建一个普通 ...

  2. <jsp:include page="xxxx"/> <@page include="xxxx"@>

     <jsp:include page="/inc/all/header.html" flush="true"/>  动态导入页面 1. 基本上没遇到 ...

  3. java访问权限修饰符,一张图搞清楚

    可横向,纵向进行比较记忆

  4. spring-security+hibernate4+quartz实现的心跳检测项目(转 收藏)

    转自:http://www.52itstyle.com/thread-27470-1-1.html HeartBeat. ~2 Z8 U! ?8 r心跳检测各类应用服务器(如Tomcat,Jetty) ...

  5. 循环遍历完成后再进行else判断

    有时需要在循环遍历完后再进行else操作,通常的办法是在循环前设置一个flag,用于判断.具体例子如下:

  6. 关于 js 动态生成html 绑定事件失效的问题

    在实际问题中,也只到使用新版jq 的on 事件 进行动态元素的绑定: 是这样 (但是依然没有效果——): $('dom节点').on('click',function(){}) 之后经过查阅发现:正确 ...

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

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

  8. Nuske vs Phantom Thnook

    Nuske vs Phantom Thnook Time limit : 4sec / Memory limit : 256MB Score : 700 points Problem Statemen ...

  9. 使用国内源(brew, pip, npm)

    如果网络不行,安装依赖包的速度小于 100k/s 或者丢包严重导致安装很慢,我认为就应该使用国内源了.今天因为国内源的问题弄了很久,我觉得在国内服务器部署,全部应该从国内下载资源.分为两种情况, 存在 ...

  10. 数据库质疑修复(SUSPECT)总结,DBCC报错

    当SQL SERVER数据库状态为质疑(SUSPECT)状态时,我们可以用以下方法来处理: DBCC报错 1. 修改数据库为紧急模式:ALTER DATABASE DBName SET EMERGEN ...