Проверьте запись, если она существует, прежде чем сохранять в базе данных - PullRequest
0 голосов
/ 20 декабря 2011

Я сделал username как ПЕРВИЧНЫЙ КЛЮЧ в базе данных. Создание новой учетной записи с тем же именем пользователя, которое уже есть в базе данных, вызывает эту ошибку:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'someuser' for key 'PRIMARY'

Как лучше всего обойти эту проблему?

Я попробовал этот подход:

        Query query = session.createQuery("from Account where name= :name");
        query.setParameter("name", user.getUsername());
        List<Account> result = query.list();

        if (!result.isEmpty()) {
            log.debug("User already exist"); 
        }

Однако журнал не запускается, даже если запись существует в базе данных.

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Попробуйте это

 String hql = "from Account where name=?";

 List <Account> recordList= session.createQuery(hql).setString(0,"xybrek").list(); 

 if(recordList!=null && recordList.size>0)

  { 

      log.debug("User already exist");

  }
0 голосов
/ 20 декабря 2011

Что ж, не будете использовать помощь INSERT IGNORE для решения такого рода проблем ..? "INSERT IGNORE" против "INSERT ... ON DUPLICATE KEY UPDATE"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...