我用ejb创建了一个namedquery来检查是否使用了用户名.当singleResult为null时,我得到以下异常:
javax.persistence.NoResultException: getSingleResult() did not retrieve any entities
Run Code Online (Sandbox Code Playgroud)
但是这个例外是我想要的用户名是免费的结果.
这是代码:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道问题是什么.:(
我想返回null并且不会得到异常.
非常感谢你
ste*_*ase 33
您似乎使用该语句在catch块中重新抛出异常throwException(username, e);.如果您希望获得用户或null没有任何异常,则应如下所示:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59986 次 |
| 最近记录: |