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
JPA中自定义查询语句一定要注意这些
最新推荐文章于 2024-08-26 09:54:05 发布