JPA中自定义查询语句一定要注意这些

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/OHRadiance/article/details/81490140
JPA的原生语句如何支持where a=X and b>x,未找到。
于是自定义,由于JPA底层是hibernate,所以需要HQL语句。
真尼玛坑,sql语句为了所谓的面向对象,整个HQL语句,简直就是典型的强行面向对象。
所以,你不得不如此:select u from Table u where u.x=x and u.y>y
每次写这个最常忘记的是第二个u,完全反人类的语法。
而且JPA解析的时候,Table必须大写开头。
这个估计是先要JPA解析成HQL语句,再执行。
至于为啥要大写开头,可能是由于JPA的规定吧。
JPA会把TableEnt对应到table_ent这张表,为什么写成tableEnt就要报错。太不人性化。

Appended at 20180811
CTM,JPA查询语句中把元素开头写成了小写。
findByStatusAndTimeMilliLessThan写成了findByStatusAnd**t**imeMilliLessThan
这还是看到之前写的附带between的查询才想起来
然between可以混着写,那less和greater应该也行
也是被JPA的语法坑过几次,才会对JPA这么没信心。
比如:findFirst必须写成findFirstBy

猜你喜欢

转载自blog.csdn.net/OHRadiance/article/details/81490140