i have created a namedquery with ejb to check if the username is used. When the singleResult is null, then i get the following Exception :
javax.persistence.NoResultException: getSingleResult() did not retrieve any entities
But this exception is the result that i want when the username is free.
Here is the code:
public User getUserByUsername(String username) throws DAOException{
try{
Query q = em.createNamedQuery(User.getUserByUsername);
q.setParameter("username", username);
return (User) q.getSingleResult();
}catch(Exception e){
throwException(username, e);
return null;
}
}
Does anybody know what the problem is. :(
I would like to return null and don`t get an Exception.
Thank you very much
You seem to rethrow the exception in your catch block with the statement throwException(username, e);
. If you expect to get the user or null
without any exception this should look like the following:
public User getUserByUsernameOrNull(String username) {
try{
Query q = em.createNamedQuery(User.getUserByUsername);
q.setParameter("username", username);
return (User) q.getSingleResult();
} catch(NoResultException e) {
return null;
}
}