2010-04-22 54 views
0

我正在試驗使用Hibernate。休眠按條件查找得到單一結果

我試圖獲得通過ID的用戶,這是我做什麼

public User get(DetachedCriteria dc){ 
    List<User> users = getHibernateTemplate().findByCriteria(dc); 
    if(users != null) 
    { 
     return users.get(0); 
    } 
    else return null; 
} 

但是當用戶不在數據庫失敗。你能幫我理解如何做到這一點嗎?

感謝

+1

首先啓用SQL跟蹤來查看Hibernate發送到數據庫的內容。在您的休眠配置(或applicationContext.xml,取決於...)中添加: true codenheim 2010-04-22 14:03:09

回答

4

如果要加載由ID是你確實應該使用任何負載或獲取。 Ayende在The difference between Get, Load and querying by id之間的差異很好。

至於爲什麼你的查詢失敗,當用戶不在數據庫中。這是因爲查詢將返回一個空列表,它與null不同。所以當你試圖訪問沒有任何內容的列表中的第0個元素時,你可能會得到一個超出界限的異常。