Spring Data Jpa查询属性中带下划线_的处理

在Spring Data Jpa中做分页查询时,通常会构造Pageable对象,例如:
image.png

如果说要排序的字段中带有下划线,查询报错,如下:
image.png
原因是Spring Data Jpa在构造查询时,对属性正则处理导致属性从下划线分开,查询时无法获得属性名。
Spring Data Jpa源码中这部分的处理代码如下
image.png
image.png

这里只需要对属性名转义,在头和尾添加\Q和\E就可使中间的标点符号失去特殊意义,将中间的字符作为普通字符。这样Spring Data Jpa就可以正确识别该属性了。注意,能处理转义字符的方法是JpaSort.unsafe(),Sort.by()是不支持的。

补充:转义字符(\Q \U \L \E)
使用 \U 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的小写字母转换成大写。在大小写敏感模式下,只能与大写文本匹配。
使用 \L 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的大写字母转换成小写。在大小写敏感模式下,只能与小写文本匹配。
作者:JSON_NULL
链接:https://www.jianshu.com/p/2dd9bc29a696
來源:
著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(Spring Data Jpa查询属性中带下划线_的处理)