2016-02-23 90 views
0

我在我的數據庫中有一些數據,並且每當數據存儲時都會自動增加一個id列。如何檢索最大id值並存儲在int變量中?

出於某種目的,我想檢索最後添加的行或最大id(也是最後一行)的行。我寫了下面的查詢爲:

List<Student> student = sessionFactory.getCurrentSession().createQuery("SELECT * FROM Student ORDER BY id DESC") 

我不知道它是否是做正確的方式,但在執行我收到錯誤,如意外的標記:*。

尋找您的寶貴建議和提前致謝。

public void storeData(Student student) 
{ 
    List<Student> std = sessionFactory.getCurrentSession().createQuery("FROM Student ORDER BY id DESC limit 1").list(); //getting error while executing this statement(unexpected token limit) 

    System.out.println(std.get(0).getNumber()); //getting error while executing it 
} 

我通過storeData類中的學生對象發送學生數據。我希望在存儲數據後,我可以訪問存儲的數據的值,例如我想將數值存儲在變量中以供進一步處理。但是在執行上面的操作時出現錯誤。

+0

你在使用Hibernate嗎? – Kayaman

+0

是的,我正在使用Hibernate @kayaman – Amit

+0

那麼你爲什麼要編寫SQL而不是HQL? – Kayaman

回答

3

爲什麼不簡單的「最高」的ID?

select max(id) from student 

使用會話工廠:

sessionFactory.getCurrentSession().createQuery("select max(id) from student"); 
+0

感謝您的建議,並且我想存儲max(id)是一個int變量。是否可以使用以下語法執行相同操作: 列表 student = sessionFactory.getCurrentSession()。createQuery(「select max(id)from Student」)。list(); System.out.println(student.get(0).getId()); – Amit

0
SELECT * FROM Student ORDER BY id DESC limit 1 
0

從查詢中刪除SELECT *,HQL doesn't need it

List<Student> student = sessionFactory.getCurrentSession().createQuery("FROM Student ORDER BY id DESC"); 
0

設置最大結果選項.setMaxResults(1)

有兩種方式

1)名單爲使用.setMaxResults(1).LIST()

所以你的發言將成爲輸出,你需要遍歷它

List <Student> student = sessionFactory.getCurrentSession().createQuery("FROM Student ORDER BY id DESC").setMaxResults(1).list(); 

2)因爲你只需要最後的結果,那麼你也可以去.setMaxResults(1).uniqueResult()

uniqueResult() : Convenience method to return a single instance that matches the query, or null if the query returns no results. 

所以你的聲明將成爲

Student student = sessionFactory.getCurrentSession().createQuery("FROM Student ORDER BY id DESC").setMaxResults(1).uniqueResult(); 

使用可以節省您的ID(最大)以任何方法int變量

[注]:從查詢中刪除限制1

希望它將幫助你

+0

謝謝!但是,我可以存儲在一個int變量的ID值 – Amit

+0

你只想要id? 或者你可以從學生對象中獲得id – Pallavi

+0

實際上,在名爲「number」(int數據類型)的表中有一列,我想檢索該值並將其存儲在另一個變量中。或者存儲在數據庫中的最後一個數字值。我嘗試了很多查詢,但無法將其轉換爲整數。 – Amit

相關問題