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中定 ...
随机推荐
- SlidingMenu官方实例分析3——PropertiesActivity
PropertiesActivity此类主要是对SlidingMenu设置的一些展示,也是为了使用者能快速的掌握SlidingMenu 的特点. 首先获得SlidingMenu对象: SlidingM ...
- day12闭包,装饰器
一.闭包:内部函数引用了外部函数的变量. # f1() #闭包的定义 #内部的函数引用了外部函数的变量 # def f1(b): #闭包的常用状态 # def f2(): # print(b) # r ...
- Laravel5.1 请求
这篇主要说说Request 每当用户访问我们的网站功能时都会用到它 我们可以使用Request中的一些数据来做出适当的相应. 1 常用的属性和方法 我们可以从Request中取到一些重要属性来做一些逻 ...
- 庖丁解牛:USB 驱动开发技术彻底解密
我们知道如果开发工程师不懂RS232 肯定会让人笑话可以想象面向未来USB 接口无处不在因此掌握USB 的原理固件编程及其驱动开发技术势必成为当务之急USB 即插即用的优点和灵活性运用于各种电子产品现 ...
- JAVA学习第六十三课 — 关于client服务端 && URL类 & URLConnection
常见的client和服务端 client: 浏览器:IE:弹窗体,猎豹:弹窗体.多标签,争强效果 服务端: server:TomCat:1.处理请求 2.给予应答 想让TomC ...
- linux 文本编辑器
文本编辑器 文本编辑器是Linux操作系统中的重要工具.其中,VI是使用最广泛的文本编辑器,其可以在任何shell中使用.此外,Red Hat Enterprise Linux6 还提供了gedit工 ...
- Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器
http://www.52nlp.cn/python%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E5%AE%9E%E8%B7%B5-% ...
- 【BZOJ4849】[Neerc2016]Mole Tunnels 模拟费用流
[BZOJ4849][Neerc2016]Mole Tunnels Description 鼹鼠们在底下开凿了n个洞,由n-1条隧道连接,对于任意的i>1,第i个洞都会和第i/2(取下整)个洞间 ...
- Restoring Road Network
D - Restoring Road Network Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem State ...
- Bootstrap的js分页插件属性介绍
Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了.它提供了一系列的参数用来支持用户的定 制,提供了公共的方法可随时获得插件状 ...