java 唯一索引冲突_JPA merge联合唯一索引无效问题解决方案
问题
JPA的merge()操作 是合并的意思,就是当保存的实体时,根据主键id划分,如果已存在,那么就是更新操作,如果不存在,就是新增操作
但是这个仅针对 主键id 划分,对联合唯一索引 无效,两次更新同一条语句还是会报错:
Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-1' for key 'UK_bing'
解决
有个简单的办法,就是先判断是否有这条数据,然后再决定是更新、还是增加,如下:
@Override
public void mergeCollection(Collection collection) {
String hql = "select count(1) from Collection where userId = ?1 and topicId =?2";
Query query = em.createQuery(hql)
.setParameter(1, collection.getUserId())
.setParameter(2, collection.getTopicId());
Long num = (Long) query.getSingleResult();
if (num > 0) {
String hql2 = "update Collection set status = ?3 where userId = ?1 and topicId =?2";
Query query2 = em.createQuery(hql2)
.setParameter(1, collection.getUserId())
.setParameter(2, collection.getTopicId())
.setParameter(3, collection.getStatus());
query2.executeUpdate();
} else {
em.merge(collection);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java 唯一索引冲突_JPA merge联合唯一索引无效问题解决方案相关推荐
- mongo 唯一约束索引_Java:MySQL 基础知识+索引相关
阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到最新文章了.每天都有分享.完全是免费订阅,请放心关注.注:本文转载自网络,不代表本平台立场,仅供读者参 ...
- 建立索引和主外约束_Mysql索引原理
阅读文本大概需要3分钟. 作者:菜菜聊架构来源:https://www.cnblogs.com/caicz/p/11009507.html 一.为什么要有索引 索引在MySQL中也叫做"键& ...
- mybatis insert 忽略 联合唯一索引_MySQL实战中,Insert语句的使用心得总结
提到MySQL的Insert语句,你肯定不陌生,或许已经张口就来:不就是insert into table values(xxx,xxx,xxx)嘛!没错,但在实战中,根据不同的需求场景,插入操作在语 ...
- mysql使用联合唯一索引会影响查询效率吗_想进大厂,这些Mysql索引底层知识你是必须知道的。...
前言 上一篇总结了Mysql的锁机制,通过读者的反映和阅读量显示,总体还是不错的,感兴趣的可以阅读一下[]. 写了那么多的Mysql文章,有读者问我是不是dba,工作真的需要掌握那么深吗.我想说的是: ...
- mysql 索引冲突_mysql唯一索引已有键值冲突解决办法
建唯一索引: alter ignore table tmp_qw2 add unique key uk_uid(user_id); IGNORE is a MySQL extension to sta ...
- mysql创建联合唯一索引
如果test表中的a字段和b字段的值可以重复,但是他们组合在一起不可以重复的话,可以将为这两个字段添加联合唯一索引 ALTER TABLE `test` ADD UNIQUE INDEX `pdas_ ...
- mysql联合唯一索引可以有多个吗_mysql可以设置联合唯一索引吗?
mysql可以设置联合唯一索引,方法:使用"Alter table 表名 add UNIQUE index 索引名 (字段1,字段2)"语句来设置,它会删除重复的记录,保留一条,然 ...
- 索引,主键,唯一索引,联合索引的区别
https://blog.csdn.net/qq_33275924/article/details/80220797 https://www.cnblogs.com/ymj0906/p/4240856 ...
- [SQLAlchemy] 创建: 主键/索引/唯一约束/联合唯一约束/联合主键约束
1. 主键 from sqlalchemy import *test = Table('test', metadata,Column('id', BigInteger, primary_key=Tru ...
最新文章
- 【KVM系列03】KVM的I/O 全虚拟化和准虚拟化
- SpringBoot集成OpenOffice实现doc文档转html
- Kotlin实战指南十七:JvmField、JvmStatic使用
- 异常检测1——python使用KNN模型进行异常检测
- 支持vxlan的服务器网卡,3台服务器互通vxlan
- eclipse 中设置注释模板
- linux(Centos5.1)升级至2.6.19内核+L7实现-- 续限P2P软件
- 微信小程序自定义下拉刷新
- python:实现培根密码算法(附完整源码)
- icon 的css,【iview】icon样式
- 消元法解二元一次方程组c语言,消元法解二元一次方程组的概念、步骤与方法...
- java编写时间流逝_JAVA日期时间类如何使用
- psycopg2 : cursor already closed
- react —— 解决报错之 Objects are not valid as a React child (found: [object HTMLDivElement]). If you meant
- IT信息考证人,证书记得要延续 ITSS CISAW CISP PMP CISSP 证书延续 有效期
- php上传图片并预览
- UMLChina建模竞赛题大全-题目全文+分卷自测(10套100题)
- dbo.GetJsonValue函数
- 零撸项目-Star Network注册流程
- 史上最全SQL基础知识总结
热门文章
- 在Windows下如何安装Tomcat服务器搭建
- Java嵌入oracle,Java插入Oracle Spatial空间数据
- oracle连接满报错日志,Oracle归档日志满了导致Oracle连接(ORA-00257)报错处理
- 【APICloud系列|24】 MNNavigationMenu模块(导航菜单)的实现
- 教你玩转CSS 属性选择器
- github哪些协议能商用_GitHub 上有哪些一般人也可以用的项目?
- 面试整理(1):原生ajax
- 如何隐藏 video 元素的下载按钮
- perl 用网易发邮件报错 554 DT:SPM 163 smtp14
- Win10 系统直接在目录下打开cmd