`
gaozzsoft
  • 浏览: 426965 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Hibernate HQL查询必知汇总

阅读更多

Sql代码
//HQL-Associations   
String hql = "select s.name, p.name, p.price from Product p inner join p.supplier as s";   
Query query = session.createQuery(hql);   
List results = query.list();  
//HQL-Associations
String hql = "select s.name, p.name, p.price from Product p inner join p.supplier as s";
Query query = session.createQuery(hql);
List results = query.list();Sql代码
//HQL-Delete  
String hql = "delete from Product where name = :name";   
Query query = session.createQuery(hql);   
query.setString("name","Product 1");   
int rowCount = query.executeUpdate();  
//HQL-Delete
String hql = "delete from Product where name = :name";
Query query = session.createQuery(hql);
query.setString("name","Product 1");
int rowCount = query.executeUpdate();Sql代码
//HQL-Function  
String hql = "select min(product.price), max(product.price) from Product product";   
Query query = session.createQuery(hql);   
List results = query.list();  
//HQL-Function
String hql = "select min(product.price), max(product.price) from Product product";
Query query = session.createQuery(hql);
List results = query.list();Sql代码
//HQL-Fetch Associations HQL Inner Join  
String hql = "from Supplier s inner join fetch s.products as p";   
Query query = session.createQuery(hql);   
List results = query.list();  
//HQL-Fetch Associations HQL Inner Join
String hql = "from Supplier s inner join fetch s.products as p";
Query query = session.createQuery(hql);
List results = query.list();Sql代码
//HQL-Named Parameters   
String hql = "from Product where price > :price";   
Query query = session.createQuery(hql);   
query.setDouble("price",2.0);   
List results = query.list();   
String hql = "from Product as product where product.supplier=:supplier";   
Query query = session.createQuery(hql);   
query.setEntity("supplier",supplier);   
List results = query.list();  
//HQL-Named Parameters
String hql = "from Product where price > :price";
Query query = session.createQuery(hql);
query.setDouble("price",2.0);
List results = query.list();
String hql = "from Product as product where product.supplier=:supplier";
Query query = session.createQuery(hql);
query.setEntity("supplier",supplier);
List results = query.list();Sql代码
//HQL-Update  
String hql = "update Supplier set name = :newName where name = :name";   
Query query = session.createQuery(hql);   
query.setString("name","Supplier Name 1");   
query.setString("newName","s1");   
int rowCount = query.executeUpdate();  
//HQL-Update
String hql = "update Supplier set name = :newName where name = :name";
Query query = session.createQuery(hql);
query.setString("name","Supplier Name 1");
query.setString("newName","s1");
int rowCount = query.executeUpdate();Sql代码
//HQL-where  
String hql = "from Product where price > 2.0 and name like 'P%'";   
Query query = session.createQuery(hql);   
List results = query.list();  
//HQL-where
String hql = "from Product where price > 2.0 and name like 'P%'";
Query query = session.createQuery(hql);
List results = query.list();Sql代码
//HQL-Map   
String hql = " select new map(usr.name as userName, usr.password as password) from User usr";   
Query query = session.createQuery(hql);   
List list = query.list();   
Map goods =(Map)list.get(0);  
//HQL-Map
String hql = " select new map(usr.name as userName, usr.password as password) from User usr";
Query query = session.createQuery(hql);
List list = query.list();
Map goods =(Map)list.get(0);
【注】

Sql代码
String hql = " select new map(usr.name as userName, usr.password as password)   
from com.jason.User usr";   
String hql = " select new map(usr.name as userName, usr.password as password)   
from com.jason.User usr";  
String hql = " select new map(usr.name as userName, usr.password as password)
 from com.jason.User usr";
String hql = " select new map(usr.name as userName, usr.password as password)
 from com.jason.User usr";由于from之前的空格,引起unexpected token: from

查询语句可以返回值为任何类型的属性或对象,包括返回类型为某种组件(Component)的属性:

Sql代码
select cust.name.firstName from Customer as cust   
select cat.mate from Cat cat  
select cust.name.firstName from Customer as cust
select cat.mate from Cat cat查询语句可以返回多个对象和(或)属性,存放在 Object[]队列中:

Sql代码
select mother, offspr, mate.name  
from DomesticCat as mother   
    inner join mother.mate as mate   
    left join mother.kittens as offspr  
select mother, offspr, mate.name
from DomesticCat as mother
    inner join mother.mate as mate
    left join mother.kittens as offspr
或存放在一个List对象中:

Sql代码
select new list(mother, offspr, mate.name)   
from DomesticCat as mother   
    inner join mother.mate as mate   
    left outer join mother.kittens as offspr  
select new list(mother, offspr, mate.name)
from DomesticCat as mother
    inner join mother.mate as mate
    left outer join mother.kittens as offspr也可能直接返回一个实际的类型安全的Java对象(假设类Family有一个合适的构造函数):

Sql代码
select new Family(mother, mate, offspr)   
from DomesticCat as mother   
    join mother.mate as mate   
    left join mother.kittens as offspr  
select new Family(mother, mate, offspr)
from DomesticCat as mother
    join mother.mate as mate
    left join mother.kittens as offspr
也可以使用关键字as给“被选择了的表达式”指派别名:

Sql代码
select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n   
from Cat cat  
select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n
from Cat cat这种做法在与子句select new map一起使用时最有用:

Sql代码
select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )   
from Cat cat


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhutianxiang/archive/2010/07/06/5716058.aspx

 

=================================================================

 

Hibernate中使用Hql查询出一定时间段的记录
2010-04-09 15:44
Hibernate中使用Hql查询出一定时间段的记录 本人参考了网上的一些例子,希望可以给大家帮助。呵呵~

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class GenHql {
private String hql = "";

public static void main(String args[]) {
GenHql genHql = new GenHql();
Timestamp startTime = Timestamp.valueOf("2010-03-12 19:11:40");
Timestamp endTime = Timestamp.valueOf("2010-03-16 19:11:40");
genHql.setHqlByTimestamp(startTime);
String hql1 = "select * from Test t where 1=1 " + genHql.getHql();
genHql.setHqlByTimestamp(startTime, endTime);
String hql2 = "select * from Test t where 1=1 " + genHql.getHql();
System.out.println("开始时间到现在" + hql1);
System.out.println("开始时间到结束时间" + hql2);
}

// 根据开始时间和结束时间生成hql语句
public void setHqlByTimestamp(Timestamp startTime, Timestamp endTime) {
String beginDate = "";
String endDate = "";
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

if (startTime != null && startTime.toString() != "") {
// startTime = Timestamp.valueOf("2010-03-12 19:11:40");
Calendar cal = Calendar.getInstance();
cal.setTime(startTime);
Date begin = cal.getTime();
beginDate = f.format(begin);
hql += " and t.timestamp>=to_date('" + beginDate
+ "','YYYY-MM-DD HH24:MI:SS')";
}

if (endTime == null || endTime.toString().equals("")) {
Date date = new Date();
endDate = f.format(date);
hql += " and t.timestamp<=to_date('" + endDate
+ "','YYYY-MM-DD HH24:MI:SS')";
} else {
// startTime = Timestamp.valueOf("2010-03-12 19:11:40");
Calendar cal = Calendar.getInstance();
cal.setTime(endTime);
Date end = cal.getTime();
endDate = f.format(end);
hql += " and t.timestamp<=to_date('" + endDate
+ "','YYYY-MM-DD HH24:MI:SS')";
}
System.out.println(hql);
}

// 根据开始时间生成hql语句
public void setHqlByTimestamp(Timestamp startTime) {
String beginDate = "";
String endDate = "";
hql = "";
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

if (startTime != null && startTime.toString() != "") {
// startTime = Timestamp.valueOf("2010-03-12 19:11:40");
Calendar cal = Calendar.getInstance();
cal.setTime(startTime);
Date begin = cal.getTime();
beginDate = f.format(begin);
hql = " and t.timestamp>=to_date('" + beginDate
+ "','YYYY-MM-DD HH24:MI:SS')";
}
}

public String getHql() {
return hql;
}

public void setHql(String hql) {
this.hql = hql;
}
}

分享到:
评论

相关推荐

    Hibernate HQL.txt

    根据提供的文件信息,我们可以深入探讨Hibernate HQL(Hibernate Query Language)的相关知识点,特别是关于其查询功能、连接操作、条件过滤以及聚合函数的应用等。 ### Hibernate HQL简介 Hibernate HQL是一种...

    HQL连接查询和注解使用总结

    HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以一种更自然的方式查询对象,而不是直接查询底层数据库表。HQL支持多种连接查询方式,包括内连接、左外连接等,并且可以通过`fetch`关键字...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    8. **Criteria API和HQL**: Hibernate提供了HQL(Hibernate Query Language)和Criteria API两种查询语言,它们允许开发者以面向对象的方式来编写查询,比直接写SQL更加灵活和方便。 9. **缓存机制**: Hibernate...

    Hibernate_query聚合函数查询.

    本篇主要探讨的是Hibernate对数据库查询中聚合函数的应用,这些功能使我们能够高效地处理数据统计和汇总任务。在学习过程中,我们经常会遇到诸如求和(SUM)、平均值(AVG)、最大值(MAX)、最小值(MIN)以及计数...

    hibernate学习资料大全

    此外,还有Criteria API和HQL(Hibernate Query Language)用于复杂查询。 6. **事务管理**: 在Hibernate中,事务处理是通过Session的beginTransaction()、commit()和rollback()方法实现的。了解事务的ACID特性...

    Hibernate查询详解

    - **HQL(Hibernate Query Language)** 是一种面向对象的查询语言,其操作目标是类、实例和属性。HQL支持面向对象特性,如继承和多态,使其更贴近Java开发者的思维模式。 - **SQL** 直接操作数据库表和列,是一种...

    hibernate jar包汇总

    8. **查询语言**:Hibernate Query Language (HQL) 是一种面向对象的查询语言,类似于SQL,但操作的是对象而不是表。此外,Criteria API也是另一种进行查询的方式,它提供了一种更加面向对象的API。 9. **缓存机制*...

    查询和并发

    本篇将详细探讨"查询和并发"这一主题,结合`hibernate_06_hql`、`hibernate_07_criteria`及`hb_08_concurrencycontrol`这三部分内容,我们将深入理解Hibernate中的HQL查询、Criteria查询以及并发控制策略。...

    Hibernate持久层方法汇总

    - `find()`方法提供了基于HQL(Hibernate查询语言)或者SQL的查询功能。它可以接收一个查询字符串和参数,返回一个结果列表,可以是单个对象,List,Set等。这种方法比较灵活,支持复杂的查询条件和关联操作。 3. ...

    韩顺平.2011版.hibernate3.3 笔记 ppt 汇总

    6. HQL与Criteria查询:介绍Hibernate特有的面向对象的查询语言HQL,以及Criteria API,它们提供了更直观的查询方式。 7. 查询优化:讨论如何优化查询性能,包括懒加载、缓存策略、查询计划等。 8. 关联映射:详述一...

    hibernate开发jar包

    3. jar包汇总:这个资源包含了一系列用于Hibernate开发的jar包,这些包提供了Hibernate框架的运行时环境和相关功能,如实体管理、事务处理、查询服务等。 4. 二级缓存:在Hibernate中,二级缓存是可选的,它能存储...

    2022年Hibernate常见面试题汇总.doc

    - HQL(Hibernate Query Language):面向对象的查询语言,类似于SQL,使用session的find()方法执行HQL。 - QBC(Query By Criteria):基于字符串的查询,封装了复杂的查询条件,适用于用户输入查询条件的情况。 ...

    hibernate3.6 文档(pdf 格式)

    #### 十六、HQL:Hibernate 查询语言 - **大小写敏感性**:解释 HQL 是否区分大小写。 - **from 子句**:介绍如何使用 from 子句指定查询的起点。 - **关联与连接**:展示如何在 HQL 中引用实体间的关联。 - **聚合...

    传智播客的struts2,hibernate,spring的ppt汇总

    Hibernate支持实体类、持久化字段、关联映射、事务管理等功能,提供了丰富的查询API,包括HQL(Hibernate Query Language)和 Criteria 查询,使得数据操作更加便捷。 **Spring** 框架是Java企业级应用的基石,它...

    hibernate 3.2中文手册 中文文档

    ### Hibernate 3.2中文手册知识点汇总 #### 第1章:Hibernate入门 - **1.1 前言** - 介绍了Hibernate的基本概念及其重要性。 - 强调了学习Hibernate对于Java开发人员的重要性。 - **1.2 第一部分—第一个...

    Hibernate

    6. **查询语言HQL**:Hibernate Query Language(HQL)是面向对象的查询语言,类似于SQL,但操作的是对象而不是表。它可以进行复杂的查询,包括聚合函数、子查询、连接操作等。 7. ** Criteria 查询**:Criteria ...

    Hibernate_API_zh-cn高手汇总

    5. Criteria和Query:提供强大的查询机制,Criteria用于构建动态查询,HQL(Hibernate Query Language)则是一种面向对象的查询语言。 三、对象持久化 Hibernate提供了四种对象持久化的方式: 1. Save():临时对象...

    Hibernate使用技巧汇总

    ### Hibernate使用技巧详解 #### 一、两种配置文件选择及使用场景 - **A. `hibernate.cfg.xml`** - **特点**: 包含数据库连接信息、可用的映射文件等配置。 - **示例**: `Configuration config = new ...

    hibernate4.1中文api

    ### hibernate4.1中文API知识点汇总 #### 1. 教程 ##### 1.1 第一部分 - 第一个Hibernate应用程序 - **设置**: 安装必要的开发环境,包括Java SDK、IDE(如Eclipse或IntelliJ IDEA)、Hibernate库等。 - **第一节...

    hibernate面试题总会

    【hibernate面试题总汇】 hibernate 是一个强大的对象关系映射(ORM)框架,它的核心功能在于将Java对象的数据映射到关系数据库中,使得开发人员能够以面向对象的方式来处理数据库操作,而无需过多关注底层的SQL...

Global site tag (gtag.js) - Google Analytics