我有一个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