如何知道Hibernate是否重复登录?

时间:2014-06-25 07:21:01

标签: java hibernate spring-mvc

我的实体Users包含idUserloginpassword,当我想插入新的User时,我需要检查是否{{ 1}}重复。其实我这样做了:

login

但我认为我可以做得更高效,而且这实际上会抛出NullPointerException

2 个答案:

答案 0 :(得分:1)

NullPointerException的原因是,如果您在DB中没有此类登录。那么唯一的结果将返回null

要解决此问题,您只需检查结果是否为空

return null != crit.uniqueResult();

答案 1 :(得分:0)

就像Damian所说,你的问题出在uniqueResult()上,它返回null。

无论如何,要做你想做的事,你也可以采取这些方法:

1-如果您的DDBB中的登录列是UNIQUE,您可以尝试插入它并捕获异常,如果该登录存在,将抛出DDBB ...

异常是SQLException,SQLException.getSQLState()会给你一个代码:" 23000"将至少指出MySQL,PostgreSQL和Oracle中的唯一约束违规。

2-您也可以进行简单的HQL / SQL选择并执行它:

session.createSQLQuery("select count(1) as cnt from my_table where login=:login")
.setParameter("login", login).uniqueResult();

在一般情况下,应该更有效,因为返回的值将是一个整数,而不是必须在内存中构建和保留的完整对象。