上次出现这个问题已经是一年前了啊,
源码解析,浅谈spring-data-jpa 中莫名的查询字段不存在问题
记得当时偷懒直接换了个不带下划线的字段解决问题
这次的业务orderBy 需要的字段又肯定有下划线,只能硬着头皮来改了
尝试换新的包来解决 发现有许多依赖的问题,干脆就直接撸代码了。
使用Predicate 一开始直接用 query.orderBy 发现不生效
看了findAll中的源码 发现 如果有pageable参数 就直接找sort了
自己的sort中写了两个参数用于order by
参考我的上篇文章,最后macher 正则处理
这里的source就是 order by传入的参数(上图中的check_time,addTime)
在github 最新的代码中 只是改变了matcher的规则
本地修改了源码 这个macher依旧不能解决问题,源代码中把下划线用来做区分字段的分隔符
重点在这个iteratorSource.add(matcher.group(1)); 这一句传过来的source做分割
接下来对PropertyPath做处理
TypeInformation<?> property = type.getProperty(source);//传入的参数是否属于type对象
if(property!=null){//属于type对象则不按下划线分割
iteratorSource.add(source);
}else {
while (matcher.find()) {
iteratorSource.add(matcher.group(1));
}
}
加入这段代码就可以解决orderby字段下划线问题了