我已将下面的代码添加到表格
中插入/更新记录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'
答案 0 :(得分:1)
您正在按userId
查找并且umul_facebook_id
违反了唯一约束,因此您需要检查FacebookId
的唯一性