2015-03-10 2 views
1

Я собираюсь проверить, что 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 происходит.

+0

Когда вы говорите * проверить с дублирующим значением по электронной почте *, вы имеете в виду попытке добавить новую строку с тем же адресом электронной почты? – christopher

+0

@christopher Да –

+0

@christopher Мне нужно вернуть 'true', когда в базе данных существует почта. –

ответ

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;} 
0

Я хотел бы изменить свой запрос:

select count(*) from Customers where email=? 

то вместо проверки getFirstResult(), просто используйте:

return (((Number)query.uniqueResult()).intValue() > 0); 

Затем он возвращает истину, если есть 1 (или более, но ваша таблица этого не позволяет) или false, если есть 0 строк с этим адресом электронной почты.