最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JPA merge聯(lián)合唯一索引無(wú)效問題解決方案

 更新時(shí)間:2020年09月19日 09:53:01   作者:賈樹丙  
這篇文章主要介紹了JPA merge聯(lián)合唯一索引無(wú)效問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

問題

JPA的merge()操作 是合并的意思,就是當(dāng)保存的實(shí)體時(shí),根據(jù)主鍵id劃分,如果已存在,那么就是更新操作,如果不存在,就是新增操作

但是這個(gè)僅針對(duì) 主鍵id 劃分,對(duì)聯(lián)合唯一索引 無(wú)效,兩次更新同一條語(yǔ)句還是會(huì)報(bào)錯(cuò):

  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'

解決

有個(gè)簡(jiǎn)單的辦法,就是先判斷是否有這條數(shù)據(jù),然后再?zèng)Q定是更新、還是增加,如下:

@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);
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Maven 多profile及指定編譯問題的解決

    Maven 多profile及指定編譯問題的解決

    這篇文章主要介紹了Maven 多profile及指定編譯問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • JAVA實(shí)現(xiàn)經(jīng)典游戲坦克大戰(zhàn)的示例代碼

    JAVA實(shí)現(xiàn)經(jīng)典游戲坦克大戰(zhàn)的示例代碼

    小時(shí)候大家都玩過坦克大戰(zhàn)吧,熟悉的旋律和豐富的關(guān)卡陪伴了我們一整個(gè)寒暑假。本文將通過Java+Swing實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • Java反射如何修改private final成員變量值

    Java反射如何修改private final成員變量值

    這篇文章主要介紹了Java反射如何修改private final成員變量值,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Java中獲取年份月份的幾種常見方法

    Java中獲取年份月份的幾種常見方法

    這篇文章主要給大家介紹了關(guān)于Java中獲取年份月份的幾種常見方法,在開發(fā)應(yīng)用程序時(shí),經(jīng)常需要獲取當(dāng)前的年、月、日,并以特定格式進(jìn)行展示或處理,需要的朋友可以參考下
    2023-09-09
  • mybatis-plus 如何配置邏輯刪除

    mybatis-plus 如何配置邏輯刪除

    這篇文章主要介紹了mybatis-plus 如何配置邏輯刪除,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • File的API和常用方法詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    File的API和常用方法詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了File的API和常用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • SpringBoot解析yml全流程詳解

    SpringBoot解析yml全流程詳解

    本文主要介紹了SpringBoot解析yml全流程詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Spring Boot 3.x 全新的熱部署配置方式詳解(IntelliJ IDEA 2023.1)

    Spring Boot 3.x 全新的熱部署配置方式詳解(IntelliJ ID

    這篇文章主要介紹了Spring Boot 3.x 全新的熱部署配置方式(IntelliJ IDEA 2023.1),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java編程實(shí)現(xiàn)A*算法完整代碼

    Java編程實(shí)現(xiàn)A*算法完整代碼

    這篇文章主要介紹了Java編程實(shí)現(xiàn)A*算法完整代碼,簡(jiǎn)單介紹了a星算法,然后分享了完整測(cè)試代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11
  • 基于MyBatis的簡(jiǎn)單使用(推薦)

    基于MyBatis的簡(jiǎn)單使用(推薦)

    下面小編就為大家?guī)硪黄贛yBatis的簡(jiǎn)單使用(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評(píng)論

贵溪市| 山东省| 南丰县| 云霄县| 白朗县| 浦城县| 罗定市| 义马市| 丰都县| 博乐市| 白沙| 永春县| 广安市| 马公市| 翁牛特旗| 老河口市| 衡阳县| 宁化县| 新安县| 额尔古纳市| 房产| 滨海县| 平凉市| 葵青区| 噶尔县| 洞口县| 太仆寺旗| 朝阳区| 榆中县| 神农架林区| 思南县| 兰考县| 历史| 华安县| 永平县| 洛隆县| 乡宁县| 仙桃市| 加查县| 新巴尔虎右旗| 娄烦县|