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

Помогите пожалуйста разобраться с 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
getSingleResult() на ровном месте генерит эксепшн "No entity found for query"
    #38477841
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
getSingleResult() на ровном месте генерит эксепшн "No entity found for query"
    #38477903
Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый 0FD,

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

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

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


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