记一次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

相关文章
相关标签/搜索