我将检查数据库中不存在的email
,然后将该行与其他属性一起存储。
以下是我的代码检测到重复的email
值:
public boolean exists(String value) {
customerDao.openSessionWithTransaction();
Query query = customerDao.openSession().createQuery("from Customers where email=? ");
query.setString(0, value);
if (query.getFirstResult() != null) {
return true;
}
return false;
}
但getFirstResult()
总是会返回null
,即使我检查的是email
重复值。
我已将uniuness
注释声明为pojo
。
这是我的表:
当我检查重复的电子邮件值时,只会发生ConstraintViolationException
。
答案 0 :(得分:0)
我会将您的查询更改为:
select count(*) from Customers where email=?
然后只需使用:
而不是检查getFirstResult()return (((Number)query.uniqueResult()).intValue() > 0);
如果有1个(或更多,但你的表不允许),则返回true;如果有0个行,则返回false。
答案 1 :(得分:0)
你可能需要这个:
public boolean exists(String value) {
customerDao.openSessionWithTransaction();
Query query = customerDao.openSession().createQuery("from Customers where email=? ");
query.setString(0, value);
if (query.uniqueResult()!= null) {
return true;
}
return false;}