我有一個hibernate和jpa很奇怪的問題。下面是兩個代碼塊:當query.getSingleResult()直接返回時,JPA返回null
public Object getObject(Date date) {
try {
Query query = entityManager
.createQuery(
"select ob from Object ob where date= :date");
query.setParameter("date", date);
return (Object)query.getSingleResult();
} catch (EmptyResultDataAccessException e) {
logger.debug(String.format("No Result found - date[%s]",date));
return null;
}
}
...
public Object getObject(Date date) {
try {
Query query = entityManager
.createQuery(
"select ob from Object ob where date= :date");
query.setParameter("date", date);
Object ret = (Object)query.getSingleResult();
return ret;
} catch (EmptyResultDataAccessException e) {
logger.debug(String.format("No Result found - date[%s]",date));
return null;
}
}
首先生成一個EmptyResultDataAccessException每次連給出的日期匹配,其中一個有效的記錄。第二個按預期返回結果。有沒有人遇到過這個?什麼導致這種行爲?
請假定存在所有其他合成事物(事務,初始化實體管理器等),唯一改變的是查詢結果是直接在返回中檢索還是首先分配給變量。
可能是我的問題可能是無益的,但是,你真的確定這兩個請求是相同的嗎?請執行一個簡單的複製/粘貼,然後重新測試,我很確定你的陳述是正確的。 – Zakaria 2012-02-06 20:45:39
我正和幾位同事坐在一起,我們一直在編輯和重新部署這個罐子,只做了一次改變。它真的很奇怪。我不斷從這個方法得到空回報。我在太陽下試過所有的東西,直到我把這個'getSingleResult()'調用到一個任務開始意外工作的任務中。 – nsfyn55 2012-02-06 20:52:45
例外看起來如何? (stacktrace) – Bozho 2012-02-06 21:00:10