学习hibernate查询集合.pdf
文本预览下载声明
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
显示全部