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

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

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

 

原由:須要本地sql查詢後,分頁返回自定義對象。報錯信息以下:

 

 

問題緣由:

由於是分頁查詢,固然須要知道數據的總數,因此hibernate會自動的執行sql幫你查詢全部的數量,可是看下圖就能發現,他把個人表名的別名當作字段來select count 了。html

 

 

解決辦法:

在本地sql即@Query裏添加一個,countQuery,將你要查詢的sql語句複製,手動select count (*),這樣hibernate就不會去本身計數了,走的就是你寫的這個計數sql。(由於當時sql不是很短,我就一直刪減找問題,下面是解決後的大體樣圖):sql

 

 總結:

多是狀態不是很好了,因此debug了好久都沒有找出問題所在,下午5點多開始弄到8點,羣裏各類問,考慮過特殊字符,中文空格各類,都快懷疑人生了。今早頭頭幫我看了後,兩分鐘解決。。。調試能力仍是太弱了。框架

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

 

分析一下報錯: hibernate

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

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

 

一直以來都以爲本身找錯仍是能夠的,此次和頭頭debug的差距一會兒讓我認識到要學的還有不少,尤爲是經驗不足等。這種問題,它的出問題點都是可以看到的,下次注意仔細看報的異常以及框架打印的一些日誌吧,從中獲取些本身想要的信息。日誌

 

原文出處:https://www.cnblogs.com/deepSleeping/p/11356282.htmlhtm

相關文章
相關標籤/搜索