記一次JPA遇到的奇葩錯誤——本地sql不識別表名的別名


記一次JPA遇到的奇葩錯誤——本地sql不識別表名的別名

報錯:Unknown column 'our' in 'field list'

 

起因:需要本地sql查詢后,分頁返回自定義對象。報錯信息如下:

 

 

問題原因:

因為是分頁查詢,當然需要知道數據的總數,所以hibernate會自動的執行sql幫你查詢所有的數量,但是看下圖就能發現,他把我的表名的別名當做字段來select count 了。

 

 

解決辦法:

在本地sql即@Query里添加一個,countQuery,將你要查詢的sql語句復制,手動select count (*),這樣hibernate就不會去自己計數了,走的就是你寫的這個計數sql。(因為當時sql不是很短,我就一直刪減找問題,下面是解決后的大致樣圖):

 

 總結:

可能是狀態不是很好了,所以debug了很久都沒有找出問題所在,下午5點多開始弄到8點,群里各種問,考慮過特殊字符,中文空格各種,都快懷疑人生了。今早頭頭幫我看了后,兩分鍾解決。。。調試能力還是太弱了。

其實日志里面已經很清楚了,hibernate都打印出來執行的sql了,只是我沒太注意那一條sql,如果注意到了可能能夠面向百度解決吧。

 

分析一下報錯:

1. unknown column 'xxx' in 'field list' 這明顯說明有sql把你這個xxx當做字段了,而我這個是表名的別名,這樣就能定位到sql錯誤

2. 再從hibernate生成的語句中也能清晰看到 select count (xxx) ...... 這問題就很明顯了。

 

一直以來都覺得自己找錯還是可以的,這次和頭頭debug的差距一下子讓我認識到要學的還有很多,尤其是經驗不足等。這種問題,它的出問題點都是能夠看到的,下次注意仔細看報的異常以及框架打印的一些日志吧,從中獲取些自己想要的信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM