I don't know why I can't catch the NoResultException thrown by a method in an EJB...
try {
User user = userFacade.findByEmail(email);
userController.setSelected(user);
getSelected().setUserOid(user.getOid());
} catch (NoResultException noResultException) {
JsfUtil.addErrorMessage("No user found with provided email");
System.err.println(noResultException.getMessage());
} catch (EJBException e){
System.err.println(e.getMessage());
}
EJB
@Stateless
public class UserFacade extends AbstractFacade<User> {
...
public User findByEmail (String email) throws NoResultException{
User user = em.createNamedQuery("User.findByEmail", User.class).
setParameter("email", email).getSingleResult();
return user;
}
...
Why this code catches EJBException instead of NoResultException and how can I catch the NoResultException?
Avvertenza: javax.ejb.EJBException
...
...
Caused by: javax.persistence.NoResultException: getSingleResult() did not retrieve any entities.