2013-03-12 33 views
3

我想從表中選擇多行/記錄,然後將結果放入「變量」中。然後我想打印每一行的內容。Java hibernate從表中選擇多行並將結果分配到列表中

如果我在Java中使用hibernate,我該怎麼做?

例如,我有一個學生表,我想獲取表中的所有行。我知道每一行都是表/實體類/ bean的一個實例。 (假設我有一個實體類學生)

表像(假設我有一個表中的數據數據庫):

表名:sutdent

四colums

ID ,LNAME,FNAME,性別

我記得我可以這樣做:

List<student> stlist=HibernateUtil.getSession().createQuery("select*from student").list(); 

//here I want to print the lname of the first row/object 
System.out.println(stlist.get(0).getLname();); 

爲什麼我會收到錯誤信息「unexpectesd token *」?

我不能使用*?如果我不能使用*,如果我想獲取記錄的所有內容(所有屬性/列),我該怎麼辦?

還是有其他錯誤嗎?我該做什麼?謝謝!!

+0

不要在生產代碼中使用'*'。另外,在使用'*'時,不應該對結果集中列的順序做任何假設。 – dschulz 2013-03-12 03:26:10

+0

儘管使用Hibernate更好地使用Student對象來獲取recoreds。如果你使用原始SQL,你需要在學生對象中的類型字段。 – swamy 2013-03-12 05:36:44

回答

4

在HQL,你這是怎麼編寫一個查詢來獲取所有對象的列表: -

List<student> stlist = HibernateUtil.getSession().createQuery("select s from student s").list(); 

,甚至這是允許的,如果你想獲取所有列。

List<student> stlist = HibernateUtil.getSession().createQuery("from student s").list(); 
6
You can do it by two ways. 

1. HQL query 
2. SQL query 

1. HQL Query 

- you are using hibernate that means you have done mapping to Student table and Student class. 
you just need to change following line. 

List<student> stlist=HibernateUtil.getSession().createQuery("from student").list(); 

and you will get all records from Student table. 

2. SQL Query 

- you can do by providing SQL query 

    List<Object> stlist=HibernateUtil.getSession().createSQLQuery("select * from student").list(); 

you will get all records as Object so you need to manually cast to Student. 
0

在上述這樣的例子很多放置。這是一些正確的,只是你可以遵循這一個。我認爲這個對你的要求很好。

首先,你可以打開會議:

Session session = HibernateUtil.getSessionFactory().openSession();

如果你已經打開了UTIL會話,可以按照這一個:

Session session = HibernateUtil.getCurrentSession();

如果你想獲取記錄從數據庫表中試試這個簡單的查詢:

List<Object> slist = session.createQuery("from Student").list();

這裏Hibernate查詢語言(HQL)消除了程序員的負擔。無需在此處編寫整個查詢。

在這裏你可以記住一件事。表名的第一個字母必須是大寫字母,否則有時會引發異常。

相關問題