在持久化到数据库之前检查记录是否存在

时间:2011-12-20 05:46:36

标签: mysql hibernate

我在数据库中将username作为PRIMARY KEY。使用数据库中已有的用户名创建新帐户会导致此错误:

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 个答案:

答案 0 :(得分:1)

试试这个

 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");

  }

答案 1 :(得分:0)

那么,不要使用INSERT IGNORE帮助解决这类问题..? "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"