У меня очень странная проблема с 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;
}
}
...
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 каждый раз, даже учитывая допустимую запись, в которой совпадает дата. Вторая возвращает результат, как и ожидалось. Кто-нибудь сталкивался с этим? Что вызывает такое поведение?
Пожалуйста, предположите, что присутствуют все другие синтаксические вещи (транзакция, инициализированный менеджер сущностей и т. Д.), Единственное, что я изменяю, это то, получаются ли результаты запроса непосредственно в возврате или сначала присваиваются переменной.