hql join
文章一:
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的更多相关文章
- 关于hql一些不常见但好用的技巧(个人总结)
最近一直在用spring-data-jpa这个东西,感觉方法上注解hql语句已经是很常用的方法了, 有一些关于hql的经验分享一下: 一.hql的join hql的优势就是直接的关联关系嘛,但是通过h ...
- 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 ...
- HQL语句中的join fetch
from Paper as paper join fetch paper.authors as authors where authors.id='xxxx'; from Paper as paper ...
- Hibernate--------八大类HQL查询集合
Hibernate的 八大类HQL查询集合 Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实 ...
- Hibernate之HQL查询的一些例子
Hibernate配备了一种非常强大的查询语言,就是HQL(hibernate query language),HQL看上去很像sql,但只是语法结构上相似,HQL是一种面向对象的查询,他可以理解继承 ...
- Hibernate —— HQL、QBC检索方式
一.HQL 检索方式 以双向的一对多来测试 HQL 检索方式.以 Department 和 Employee 为例. 建表语句: CREATE TABLE department ( dept_id ) ...
- HQL常用的查询语句
摘录自某人,比较有用,比较全. // HQL: Hibernate Query Language. // 特点: // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用. // ...
- [转]hql 语法与详细解释
HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...
- hibernate中HQL多对多的查询
现有三张表 TLXPURCHASE.采购事项审批表,TLXPURCHASEACTIVITY.采购招标活动对应表,TLXACTIVITY.招标活动表,采购事项审批表和采购活动表是多对多关系.java中定 ...
随机推荐
- node.js cmd常用命令
cmd1.c:如果我们想访问c盘,那么我们需要在命令行中输入c:就行了 2.cd..cd..就可以返回上层目录 3.cd mmcd mm即可访问mm文件夹 4.dir如果想查看该文件夹下有哪些文件,则 ...
- Map Hashtable Hashmap 集合四
Map是通过键值对来唯一标识的,所以不能重复 存相同键值对 Hashtable存的是键值对 Hashtable<key,value> key,value 都不能为null 方法get(); ...
- 浅析Avicii的MV Hey Brother
date: 2017-04-10 20:30:19 其实这篇随感早应在一个月之前就写完的,但是笔者刚从老家来到北京,需要安顿各种事情,再加上自己比较懒上班比较忙,每天晚上回到家,都是直接趴在床上睡了. ...
- iphone开发常用代码笔记
1.显示图像: 1 2 3 4 5 6 CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f); UIImageView *myImag ...
- ASP.NET中RegisterStartupScript和RegisterClientScriptBlock有区别吗
今天用RegisterClientScriptBlock()方法调用了alertify.js(绚丽的实现alert()同样的提示功能): Page.ClientScript.RegisterClien ...
- AngularJS定时器任务
由于项目需要监测用户在线时长,所以用定时器来实现. /*计算在线时长,一分钟执行一次*/ var stopEvent = $interval(function(){ //每分钟执行一次定时任务 $sc ...
- SharePoint服务器端对象模型 之 序言
对于刚刚开始接触SharePoint的开发人员,即使之前有较为丰富的ASP.NET开发经验,在面对SharePoint时候可能也很难找到入手的方向.对于任何一种开发平台而言,学习开发的过程大致会包括: ...
- JavaScript数据结构与算法-栈练习
栈的实现 // 栈类 function Stack () { this.dataStore = []; this.top = 0; // 栈顶位置 相当于length,不是索引. this.push ...
- C# 自定义控件摘记
C# 自定义控件属性 现有自定义控件,内有一textbox控件 TextBox1.控件有一属性 Value 定义为 [BrowsableAttribute(true)] [BindableAttrib ...
- Python中 sys.argv[]的用法实操
使用sys.argv[]首先要调用模块sys import sys 通俗说,这个东西就是取代了input的功能,input是用pycharm上,而argv[]是用在命令行上 也就是window 上的小 ...