HQL 檢索方式
實例化查詢結果
實例化查詢結果可以說是對屬性查詢的一種改進.在使用屬性查詢時同于使用對象數組,操作和理解不太方便,如果將一個object[]中的所有成員封閉成一個對象就方便多了.
下面的程序將查詢結果進行了實例化:
/*打開Sessio,開戶事務*/
Query query = session.createQuery("select new Student(s.name,s.age) from Student s");\
List list = query.list();
for(int i=0;i<list.size();i++)
{
Student student = (Student)list.get(i);
System.out.println(student.getName + " " + student.getAge());
}
/*提交事務,關閉Session*/
需要注意的是,Student對象中必須有Student(name,age)的構造函數,否則會出錯,
因為程序調用new Student(s.name,s.age)語句時打不到相應的構造函數.
集合過濾
下面是一個關于集合過濾的例子
/*打開Sessio,開戶事務*/
term = (term)session.get(Term.class,"21fsd54fds41245742");
Query query = sesion.createFilter(term.getStudent(),"where this.age>18");
List list = query.list();
/*提交事務,關閉Session*/
在使用集合過濾時,需要注意以下幾點:
createFilter()方法返回的是Query對象
createFilter()方法的第一個參數為一個持久化對象(必須為持久化狀態,
臨時或者脫管對象都是不行的)的集合.
/*打開Sessio,開戶事務*/
term = (term)session.get(Term.class,"21fsd54fds41245742");
student = new Student();
student.setName("XXX");
student.setAge(20);
term.getStudent.add(student);
Query query = sesion.createFilter(term.getStudent(),"where this.age>18");
List list = query.list();
/*提交事務,關閉Session*/
此段程序查出的學生對象并不包含剛剛所添加的學生對象,即使他的年齡是符合條件的
posted on 2007-08-23 20:53
Ke 閱讀(631)
評論(0) 編輯 收藏 所屬分類:
hibernate