HQL原来还可以这么用呀,呵呵,长见识了!
+++++++++++++++++++++++++++++++++++++++++++++++++
这里制作一个引子,具体内容比较多,而且hibernate文档里的hql篇写的很详细
可以这么用:
List list = getHibernateTemplate().find("select new map(t1.c1,t2.c3) from table1 t1 ,table2 t2 where t1.c1=t2.c2");
这样的话list里的每个元素都是一个map,每个map里包含两个元素
注意:这里的table1和table2都是class名并不是真的表名,毕竟这是hql。除了可以用map还还支持list和自定义的bean。
//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-Delete
String hql = "delete from Product where name = :name";
Query query = session.createQuery(hql);
query.setString("name","Product 1");
int rowCount = query.executeUpdate();
//HQL-Function
String hql = "select min(product.price), max(product.price) from Product product";
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();
//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-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-where
String hql = "from Product where price > 2.0 and name like 'P%'";
Query query = session.createQuery(hql);
List results = query.list();
//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);
【注】
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
//select new
给一个构建函数:
public class Department(Department d, Integer employeeSize)
然后写成这样:
SELECT new Department(department, count(employee.id)) FROM .....
本文转自vtrtbb.spaces.live.com/blog/cns!14B0BD73BAB3D6CD!192.entry
分享到:
相关推荐
在Hibernate框架中,HQL(Hibernate Query Language)是用于操作对象关系映射的查询语言,类似于SQL,但它是面向对象的。本篇文章将详细介绍在Hibernate中进行投影查询的三种主要方式:直接查询、查询返回对象以及...
HQL,全称为Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言。它基于SQL标准,但更加强调对象模型,支持Java中的对象关系映射(ORM),能够处理继承、多态等特性,使开发者能够在保持面向...
HQL(Hibernate Query Language)是Hibernate框架中用于查询数据的一种语言。它类似于SQL,但面向对象特性更明显,可以更加灵活地处理复杂的对象图关系。HQL支持基本的查询操作如选择、更新、删除等,并且可以方便地...
JPA(Java Persistence API)是一种JavaEE标准,用于持久化数据,HQL(Hibernate Query Language)是 Hibernate 框架提供的一种查询语言,它允许开发者使用面向对象的方式查询数据库。HQL 查询是 JPA 中的一种查询...
在Hibernate中,参数查询通常涉及到HQL(Hibernate Query Language)或者使用Criteria API。这两种方式都可以实现动态参数查询,即根据传入的参数来构建不同的SQL语句。以下是对这两种方法的详细说明: 1. **HQL...
HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者使用类及其属性来编写查询语句,而不是传统的SQL语句。这使得开发人员可以更加专注于业务逻辑而非底层数据库的细节。 **1.1 基本查询** - *...
在Hibernate中,我们通常使用HQL(Hibernate Query Language)或Criteria API进行查询,但这些方式并不支持复杂的动态查询。为了实现动态SQL,我们可以借助于Hibernate的QBC(Query By Criteria)和Criteria API,...
HQL(Hibernate Query Language)是一种专为Hibernate设计的面向对象的查询语言,它允许开发者使用类名和属性名来进行数据库查询,而无需直接操作SQL语句。这不仅提高了代码的可读性和可维护性,还使得开发工作更加...
本教程将详细解释如何使用Hibernate将本地SQL查询的结果封装成对象,以便更好地理解和应用这项技术。 1. Hibernate ORM简介: Hibernate是一个开源的ORM框架,它为Java应用程序提供了数据持久化的解决方案。它通过...
- **一对多关联映射**(`one-to-many`):一个实体对应多个实体实例,使用`<list>`、`<set>`、`<bag>`或`<map>`标签进行映射。 - **多对一关联映射**(`many-to-one`):多个实体对应一个实体实例,通常在子类中通过...
2. **条件查询**:通过传入HQL(Hibernate Query Language)或者Criteria API来实现动态查询。例如`public List<T> findByExample(T exampleEntity)`,可以基于一个实例对象的属性来构建查询条件。 3. **分页查询**...
标题和描述均提到了“HQL精点查询语句”,这明确指向了HQL(Hibernate Query Language)在数据库查询中的应用。HQL是Hibernate框架提供的一种面向对象的查询语言,它允许开发人员以面向对象的方式编写数据库查询,而...
Hql与Sql 1、HQL是面向对象的,所以HQL与数据库无关 2、HQL最终也会生成SQL,也就是说 HQL使用...d.Map 利用了Map函数,查询两个及两个以上的类属性 d.返回对象 利用了构造函数的形式(Dto) 示例: @Test public void
除了Criteria查询,还可以使用HQL(Hibernate Query Language)进行分页查询,HQL是Hibernate提供的面向对象的查询语言,语法类似SQL。以下是一个使用HQL分页查询的例子: ```java String hql = "from User"; Query...
10. **集合映射**:Hibernate支持多种集合类型(如List、Set、Map等)与数据库表中的多对一、一对多、多对多关系的映射。 11. **事件监听器**:Hibernate允许注册事件监听器,对持久化对象的各种操作(如保存、更新...
在使用Criteria API进行查询时,我们通常会先通过`Session.createCriteria(Class entityClass)`来创建Criteria对象,然后利用`Criteria.add(Expression condition)`添加条件,最后通过`Criteria.list()`或`Criteria....
6. 集合类映射:在Java中集合是常用的,Hibernate支持集合类的映射,这部分将解释如何映射List、Set、Map等集合类型。 7. 组件映射:当一个类的属性是由其他几个类的属性组合而成时,可以使用组件映射。这部分内容...
在Java的Hibernate框架中,有时候我们需要执行自定义的SQL查询以获取特定的数据,这时就可以使用SQLQuery接口。本文将深入探讨Hibernate如何通过SQLQuery接口执行原生SQL查询,并展示如何处理查询结果。 一、创建...