Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / getSingleResult() на ровном месте генерит эксепшн "No entity found for query" / 5 сообщений из 5, страница 1 из 1
26.11.2013, 10:53:47
    #38477790
Dutchman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getSingleResult() на ровном месте генерит эксепшн "No entity found for query"
Добрый день!

Помогите пожалуйста разобраться с JPA - как говорится споткнулся на ровном месте!
Выполняю простейший запрос используя getSingleResult():
Код: java
1.
2.
3.
UsersModel userFaces = (UsersModel) em.createQuery("select uf from UsersModel uf where uf.userMail=:prm").
              setParameter("prm", getUserModel().getUserMail()).getSingleResult();
	if(userFaces!=null) context.addMessage(null, ...); 

как результат получаю эксепшн:
Код: java
1.
Caused by: javax.faces.el.EvaluationException: javax.persistence.NoResultException: No entity found for query

НО дело в том, что точно такой же код исключительно-замечательно работает в другой процедуре и
эксепшинов не генерит. В чем может быть дело? Что не правильно я "исполняю"?

P.S. для того, чтобы выйти из сложившейся ситуации пришлось данный код заменить на:
Код: java
1.
2.
3.
List<UsersModel> listUserFaces = (List<UsersModel>) em.createQuery("select uf from UsersModel uf where f.userMail=:prm").
                           setParameter("prm", getUserModel().getUserMail()).getResultList();
	if(listUserFaces.size()>0) context.addMessage(null, ...);
...
Рейтинг: 0 / 0
26.11.2013, 11:23:27
    #38477841
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getSingleResult() на ровном месте генерит эксепшн "No entity found for query"
Dutchman,

Точно такой же код исключительно-замечательно работает в другой процедуре потому что запрос возвращает одну строку, а в другом 0 строк, все зависит от :prm. Читайте javadoc!

getSingleResult

java.lang.Object getSingleResult()

Execute a SELECT query that returns a single untyped result.

Returns:
the result
Throws:
NoResultException - if there is no result
NonUniqueResultException - if more than one result
IllegalStateException - if called for a Java Persistence query language UPDATE or DELETE statement
QueryTimeoutException - if the query execution exceeds the query timeout value set and only the statement is rolled back
TransactionRequiredException - if a lock mode has been set and there is no transaction
PessimisticLockException - if pessimistic locking fails and the transaction is rolled back
LockTimeoutException - if pessimistic locking fails and only the statement is rolled back
PersistenceException - if the query execution exceeds the query timeout value set and the transaction is rolled back
...
Рейтинг: 0 / 0
26.11.2013, 11:53:56
    #38477903
Dutchman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getSingleResult() на ровном месте генерит эксепшн "No entity found for query"
Уважаемый 0FD,

проверил на практике - Ваши слова полностью подтверждаются! Но тогда получается,
что я заранее должен быть уверен в том, что getSingleResult() возвращает не null. И как
следствие безопаснее использовать getResultList(). Правильно я понимаю?
...
Рейтинг: 0 / 0
26.11.2013, 12:05:27
    #38477926
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getSingleResult() на ровном месте генерит эксепшн "No entity found for query"
Dutchman,

Да. Что значит 'безопаснее', просто getSingleResult для других случаев, там где всегда ожидается одна строка, все остальное исключительная ситуация.
...
Рейтинг: 0 / 0
26.11.2013, 12:07:44
    #38477933
Dutchman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getSingleResult() на ровном месте генерит эксепшн "No entity found for query"
0FD,

Ясно ... спасибо за пояснения!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / getSingleResult() на ровном месте генерит эксепшн "No entity found for query" / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]