我已将以下代码添加到表中的“插入/更新”记录中

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:重复
密钥'umul_facebook_id_UNIQUE'的条目'482186425258498'; SQL [n / a];
约束[null];嵌套异常为
org.hibernate.exception.ConstraintViolationException:重复的条目
密钥'umul_facebook_id_UNIQUE'的'482186425258498'

最佳答案

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

关于java - org.springframework.dao.DataIntegrityViolationException:重复的条目Spring + Hibernate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25044024/

10-15 11:18