文档详情

学习hibernate查询集合.pdf

发布:2021-11-08约6.59万字共50页下载文档
文本预览下载声明
hibernate HQL 查询使用详解 2010-06-30 15:30 Hibernate Query Language (HQL)提供了十分强大的功能,推荐大家使用这种 查询方式。 HQL具有与 SQL语言类似的语法规范,只不过 SQL针对表中字段进行 查 询,而 HQL针对持久化对象,它用来取得对象,而不进行 update 、delete 和 insert 等操作。而且 HQL是完全面向对象的, 具备继承、多态和 关联等特性。 1.from 子句 from 字句是最简单的 HQL语句,例如 from Student ,也可以写成 select s from Student s 。它简单地返回 Student 类的所有实例。 除了 Java 类和属性的名称外, HQL语句对大小写并不敏感,所以在上一句 HQL 语句中,from 与 FROM是相同的, 但是 Student 与 student 就不同了, 所以上述 语句写成 from student 就会报错。 下列程序演示如何通过执行 from 语句取得所 有的 Student 对象。 Query query = session.createQuery( “from Student ”); List list = query.list(); for (int i=0;ilist.size(); i++) { Student stu = (Student)list.get(i); System.out.println(stu.getName()); } 如果执行 HQL语句“ from Student, Course”,并不简单地返回两个对象,而是 返回这两个对象的的笛卡儿积, 这类似于 SQL语句中字段的全外连接。 在实际应 用中,像“ from Student, Course ”这样的语句几乎不会出现。 2 .select 子句 有时并不需要得到对象的所有属性,这时可以使用 select 子句进行属性查询, 例如, select from Student s 。下面程序演示如何执行这个语句: Query query = session.createQuery( “select from Student s ”); List list = query.list(); for (int i=0;ilist.size(); i++) { String name = (String)list.get(i); System.out.println(ame()); } 如果要查询两个以上的属性,查询结果会以数组的方式返回,如下所示: Query query = session.createQuery( “select , s.sex from Student as s ”); List list = query.list(); for (int i=0;ilist.size(); i++) { Object obj[] = (Object[])list.get(i); System.out.println(ame(obj[0] + “的性别是:” +obj[1])); } 在使用属性查询时,由于使用对象数组,操作和理解都不太方便,如果将一个 object[] 中所有成员封装成一个对象就方便多了。 下面的程序将查询结果进行了 实例化: Query query = session.createQuery( “select new Student(, s.sex) from Student s ”); List list = query.list(); for (int i=0;ilist.siz
显示全部
相似文档