nsf*_*n55 5 java orm hibernate jpa
我对 hibernate 和 jpa 有一个非常奇怪的问题。下面是两块代码:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
...
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;
}
}
Run Code Online (Sandbox Code Playgroud)
即使给定日期匹配的有效记录,第一个也会每次生成 EmptyResultDataAccessException。第二个按预期返回结果。有没有人遇到过这个?是什么导致了这种行为?
请假设所有其他语法事物都存在(事务、初始化的实体管理器等),我唯一改变的是查询结果是直接在返回中检索还是首先分配给变量。