Hibernate HQL的5种常见检索方式详解
在 Hibernate 核心 API 中,Query 接口是专门用于 HQL 查询的接口。教程《Hibernate核心接口》已经讲解过该接口,并通过案例演示了该接口中 list() 方法的使用。本节将针对 HQL 中其他几种常见的检索方式进行详细讲解。
指定别名
HQL 语句与 SQL 语句类似,也可以使用 as 关键字指定别名。在使用别名时,as 关键字可以省略。下面通过案例演示如何在 HQL 语句中使用别名。
1)在 MyEclipse 中创建一个名为 hibernateDemo04 的 Web 项目,将 Hibernate 所必需的 JAR 包添加到项目的 lib 目录中,并发布到类路径下。
2)参见《第一个Hibernate程序》,分别编写实体类、映射文件和配置文件。参见《Hibernate核心接口》教程,编写 Hibernate 工具类。
3)在 src 目录下创建包 com.mengma.test,在该包下创建一个名为 HQLTest 的类,并在类中添加一个 test1() 方法,如下所示。
package com.mengma.test; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.junit.Test; import com.mengma.domain.HibernateUtils; import com.mengma.domain.User; public class HQLTest { // 指定别名 @Test public void test1() { Session session = HibernateUtils.getSession(); // 得到一个 Session session.beginTransaction(); String hql = "from User as u where u.name='zhangsan '"; // 编写 HQL Query query = session.createQuery(hql); // 创建 Query对象 List<User> list = query.list(); // 执行查询,获得结果 for (User u : list) { System.out.println(u); } session.getTransaction().commit(); session.close(); } }
上述代码中,字母 u 表示 User 对象的别名,在 where 条件后面,使用了别名指定查询条件。运行代码之前,首先查询 user 表中的数据,查询结果如图 1 所示。
发表评论