我在数据库中将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");
}
但是,即使数据库中存在记录,也不会触发日志。
答案 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"