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

解決jpa查詢語句自動(dòng)變成了update的問題

 更新時(shí)間:2021年08月06日 08:59:58   作者:YYZhQ  
這篇文章主要介紹了解決jpa查詢語句自動(dòng)變成了update的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

jpa查詢語句自動(dòng)變成了update

今天碰到了個(gè)奇怪的問題,明明dao中一個(gè)查詢函數(shù),一直報(bào)connection read-only錯(cuò)誤,斷點(diǎn)設(shè)置過去,發(fā)現(xiàn)明明一個(gè)select 查詢語句,一直到生成Query查看變量里面都是查詢的代碼,可一執(zhí)行就變成了update,簡直見了鬼了。

我的架構(gòu)是sshj,層次也就是entity,dao,service,action,代碼如下,非常簡單的代碼:

dao層:

public boolean findCanXiaohu(String code) {
  try {
   String queryStr = "  select count(*) from t_tablename ";
   Query query = em.createNativeQuery(queryStr);
   Long res = (Long) query.getSingleResult();
   if (res > 0) {
    return false;
   } else {
    return true;
   }
  } catch (Exception e) {
   return true;
  }
 }

serivce層:

public boolean getCanXiaohu(String code){
  return dao.findCanXiaohu(code);
 }

action層:

public String edit(){
  String res =  super.edit();
  if ("1".equals(entity.getYhzhanghuxingzhi())) {
   String code = entity.getYhcunkuanrenbianhao();
   canXiaohu = service.getCanXiaohu(code);
  } else {
   canXiaohu = true;
  }
  return "input";
 }

剛開始我以為是因?yàn)樵赼ction層我寫進(jìn)了prepareModel方法中,這個(gè)方法按道理也沒有寫入數(shù)據(jù)庫操作,但以防萬一吧,我改到了edit方法下,這個(gè)方法也就是打開一個(gè)編輯頁面,其prepareEdit函數(shù)中執(zhí)行了prepareModel,也不過根據(jù)傳遞的id從數(shù)據(jù)庫中查找entity。

奇怪就奇怪在一執(zhí)行到getCanXiaohu,看斷點(diǎn)也執(zhí)行到了dao.findCanXiaohu(),實(shí)話說,我在前面查找問題過程中,還把函數(shù)名都改成這樣了,原來沒有前綴find、get,就如同上面說的,我斷點(diǎn)設(shè)置到查詢語句,一步步執(zhí)行,生成query的時(shí)候看里面的語句還是select,可一執(zhí)行到query.getSingleResult(),它就直接異常,然后看輸出的語句,就成了一個(gè)update t_table的語句,其中的set語句set 各字段的值,因?yàn)檫@個(gè)函數(shù)是查詢函數(shù),沒加事務(wù),所以不能執(zhí)行update,所以就會(huì)異常出錯(cuò)。但它就是個(gè)查詢,我也并不打算做修改,不知道為什么會(huì)出這樣的問題,怎么改都不行,也搞不明白是怎么回事。

我就各種試,最后, 我把語句改成了jpql標(biāo)準(zhǔn)語句,然后,居然可以了?。。。。?!

public boolean findCanXiaohu(String code) {
  try {
   String queryStr = "  select count(o) from ClassName o ";
   Query query = em.createQuery(queryStr);
   Long res = (Long) query.getSingleResult();
   if (res > 0) {
    return false;
   } else {
    return true;
   }
  } catch (Exception e) {
   return true;
  }
 }

不報(bào)錯(cuò)了,也執(zhí)行查詢了,雖然成功了,可我還是不知道是怎么回事。

JPA框架中UPDATE語句問題

一定要加上下面這個(gè)兩個(gè)注解啊啊啊啊?。。。。?!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Spring Boot+MyBatis框架做查詢操作的示例代碼

    使用Spring Boot+MyBatis框架做查詢操作的示例代碼

    這篇文章主要介紹了使用Spring Boot+MyBatis框架做查詢操作的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Java利用HttpClient模擬POST表單操作應(yīng)用及注意事項(xiàng)

    Java利用HttpClient模擬POST表單操作應(yīng)用及注意事項(xiàng)

    本文主要介紹JAVA中利用HttpClient模擬POST表單操作,希望對(duì)大家有所幫助。
    2016-04-04
  • SpringBoot啟動(dòng)java.nio.charset.MalformedInputException: Input length = 1報(bào)錯(cuò)的解決方案

    SpringBoot啟動(dòng)java.nio.charset.MalformedInputException: I

    本文主要介紹了SpringBoot啟動(dòng)java.nio.charset.MalformedInputException: Input length = 1報(bào)錯(cuò)的解決方案
    2023-07-07
  • ArrayList?foreach循環(huán)增添刪除導(dǎo)致ConcurrentModificationException解決分析

    ArrayList?foreach循環(huán)增添刪除導(dǎo)致ConcurrentModificationException解決分

    這篇文章主要為大家介紹了ArrayList?foreach循環(huán)增添刪除導(dǎo)致ConcurrentModificationException解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-12-12
  • Java導(dǎo)出Excel文件的方法

    Java導(dǎo)出Excel文件的方法

    項(xiàng)目里很多接口都涉及導(dǎo)出Excel文件,所以本文給大家總結(jié)了項(xiàng)目中導(dǎo)出Excel文件的方法,并通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2025-02-02
  • 進(jìn)一步理解Java中的多態(tài)概念

    進(jìn)一步理解Java中的多態(tài)概念

    這篇文章主要介紹了進(jìn)一步理解Java中的多態(tài)概念,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 查找jdk安裝路徑并且切換多版本jdk的詳細(xì)步驟

    查找jdk安裝路徑并且切換多版本jdk的詳細(xì)步驟

    在日常的工作學(xué)習(xí)中可能需要用到不同版本的jdk,下面這篇文章主要給大家介紹了關(guān)于查找jdk安裝路徑并且切換多版本jdk的詳細(xì)步驟,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 淺談JackSon的幾種用法

    淺談JackSon的幾種用法

    這篇文章主要介紹了淺談JackSon的幾種用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Spring Cloud Gateway + Nacos 實(shí)現(xiàn)動(dòng)態(tài)路由

    Spring Cloud Gateway + Nacos 實(shí)現(xiàn)動(dòng)態(tài)路由

    這篇文章主要介紹了Spring Cloud Gateway + Nacos 實(shí)現(xiàn)動(dòng)態(tài)路由的方法,幫助大家實(shí)現(xiàn)路由信息的自動(dòng)更新,感興趣的朋友可以了解下
    2020-10-10
  • java求解漢諾塔問題示例

    java求解漢諾塔問題示例

    漢諾塔問題的描述如下:有3根柱子A、B和C,在A上從上往下按照從小到大的順序放著一些圓盤,以B為中介,把盤子全部移動(dòng)到C上。移動(dòng)過程中,要求任意盤子的下面要么沒有盤子,要么只能有比它大的盤子。編程實(shí)現(xiàn)3階漢諾塔的求解步驟
    2014-02-02

最新評(píng)論

屏东市| 濮阳市| 昂仁县| 沅陵县| 贵州省| 铜梁县| 千阳县| 土默特左旗| 攀枝花市| 无为县| 象州县| 台江县| 阳朔县| 西和县| 博罗县| 会昌县| 清流县| 呼伦贝尔市| 新宾| 抚宁县| 上林县| 平顺县| 井研县| 江都市| 陇西县| 闽清县| 集安市| 周口市| 平凉市| 柘荣县| 广河县| 白城市| 剑阁县| 新晃| 盱眙县| 峨眉山市| 汪清县| 南通市| 安吉县| 哈尔滨市| 沙洋县|