0
我必須檢索數據庫條目。我知道我寫的查詢只返回一行。爲此我使用getSingleResult。但是,當查詢返回null時,我無法捕捉它。我該如何解決這個問題? 下面是一段代碼,我有使用實體管理器的getSingleResult檢查數據庫的空返回
try {
result = em.createQuery("SELECT d FROM fields d WHERE d.fieldID = :fieldID", Field.class)
.setParameter("fieldID", fieldID)
.getSingleResult();
//manual null check only seems to work. But it seems tedious to check every DB column for null value :(
if((result.getValsText() == null)){
result = new Field();
result.setValText("empty");
}
} catch (NoResultException e) {
result = new Field();
result.setValText("empty");
}
請指教。
感謝
我似乎得到一個null bcos沒有找到記錄。我想這就是爲什麼NoResultException不會被拋出?那麼如何使用getSingleResult來檢查這個? – user900785 2013-04-10 08:42:46
@ user900785 - 好的,就是這一點 - 沒有辦法僅僅使用'getSingleResult'來檢查 - try/catch是你可以用它做的唯一的事情,所以只有在你肯定能夠找到結果的地方使用它。對於查詢中沒有發現任何內容的錯誤,您可以使用我答案中的3個選項之一(您最好使用第三個選項) – kostja 2013-04-10 09:04:10
我有一個不同的問題。我試過你的建議,那是當我意識到一些列條目是NULL的時候。因此我得到一個空指針異常。我如何檢查這個? – user900785 2013-04-10 13:09:12