Java org.springframework.dao.DataIntegrityViolationException:重复条目Spring+Hibernate
我已经添加了下面的代码来将记录插入/更新到表中Java org.springframework.dao.DataIntegrityViolationException:重复条目Spring+Hibernate,java,spring,hibernate,Java,Spring,Hibernate,我已经添加了下面的代码来将记录插入/更新到表中 public void createFacebookAccessTokenRecord(int userId, Long facebookId, String token, String secret) { Session session = getSessionFactory().getCurrentSession(); UserAuthDetails userAuthDetails = (
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'用于键'umul_facebook_id_UNIQUE';SQL[n/a];
约束[null];嵌套异常是
org.hibernate.exception.ConstraintViolationException:重复条目
“482186425258498”用于键“umul\u facebook\u id\u UNIQUE”
您正在按用户id进行查找,有关umul_facebook_id的唯一性约束被违反,因此您也需要检查FacebookId的唯一性表中只有一条记录,FacebookId为空,这就是我更新它的原因。只需使用此代码在数据库中搜索,从subodhc_ccc中选择*。用户身份验证详细信息,其中facebook_id=48218645258498;不存在记录我的意思是尝试使用相同的代码,它可能被缓存或在sessionOk中的某个位置,但是session.merge应该可以工作,如果存在,则更新,否则插入..相同的我尝试过session.SaveOrUpdate我的意思是在合并或更新之前,尝试通过它读取实例,或者尝试启用sql日志,并在失败之前查看它是否正在查询,要排除的查询是什么