检测Hibernate中的重复行

时间:2015-03-10 21:45:51

标签: java hibernate

我将检查数据库中不存在的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

这是我的表:

enter image description here

当我检查重复的电子邮件值时,只会发生ConstraintViolationException

2 个答案:

答案 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;}