org.springframework.dao.DataIntegrityViolationException:重复条目Spring + Hibernate

时间:2014-07-30 18:13:55

标签: java spring hibernate

我已将下面的代码添加到表格

中插入/更新记录
public void createFacebookAccessTokenRecord(int userId, Long facebookId,
            String token, String secret) {
        Session session = getSessionFactory().getCurrentSession();
        UserAuthDetails userAuthDetails = (UserAuthDetails) session.get(
                UserAuthDetails.class, new Integer(userId));
        if (userAuthDetails != null) {
            userAuthDetails.setFacebookId(facebookId);
            userAuthDetails.setFacebookUserToken(token);
            userAuthDetails.setFacebookUserTokenSec(secret);
            session.merge(userAuthDetails);
        } else {
            userAuthDetails = new UserAuthDetails();
            userAuthDetails.setUserId(userId);
            userAuthDetails.setFacebookId(facebookId);
            userAuthDetails.setFacebookUserToken(token);
            userAuthDetails.setFacebookUserTokenSec(secret);
            userAuthDetails.setCreatedDt(new Date());
            session.save(userAuthDetails);
        }


    }

如果数据存在,它将更新表,否则插入新记录,在我的情况下数据已经存在所以我更新记录所以首先如果循环工作但我得到

  

org.springframework.dao.DataIntegrityViolationException:重复   进入' 482186425258498' for key' umul_facebook_id_UNIQUE&#39 ;; SQL [不适用];   约束[null];嵌套异常是   org.hibernate.exception.ConstraintViolationException:重复条目   ' 482186425258498'关键词' umul_facebook_id_UNIQUE'

1 个答案:

答案 0 :(得分:1)

您正在按userId查找并且umul_facebook_id违反了唯一约束,因此您需要检查FacebookId的唯一性