• 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 所示。

    查询结果
    图 1  查询结果

更多...

加载中...