源码解析,浅谈spring-data-jpa 中莫名的查询字段不存在问题(2)

上次出现这个问题已经是一年前了啊, 

源码解析,浅谈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字段下划线问题了

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值