集合排序对反射的影响

业务情景:

一个列表页面,页面字段来源多表,查询逻辑略复杂,原来一直以主表某个字段排序,做查询的时候就排序做分页查询了即可

现在现场提个需求要用附表字段做排序,当前的逻辑没法在查询里实现排序,我就想查出来所有,再排序,再手动分页。

然后我给实体加了implements Comparable<Entity>, 添加排序方法

@Override
    public int compareTo(Entity o) {       
        return this.backDate.compareTo(o.getBackDate());
    }

对查询出来的list结果 排序

Collections.sort(list, new Comparator<Entity>() {
            @Override
            public int compare(Entity o1, Entity o2) {
                //降序
                return o2.getBackDate().compareTo(o1.getBackDate());
            }
        });

后边再截取分页。 我本地测试也没问题,但是提交到现场运行报错了

报错日志:

------------>反射调用接口服务名:thirdPartyService.sendUserPendingToOA;busiId:40
2885bd71aa39970171f886a44500c1
http://192.168.5.118/
net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1

  at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:499)
        at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:972)
        at net.sf.json.JSONObject._fromString(JSONObject.java:1201)
        at net.sf.json.JSONObject.fromObject(JSONObject.java:165)
        at net.sf.json.JSONObject.fromObject(JSONObject.java:134)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:269)

        at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryB
ean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:32
2)
        at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJob
Bean.java:112)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.j
ava:525)

看了一圈没看出来这错误和我修改的有什么关系,考虑是其它业务功能有使用反射,对我的修改的功能反射调用,而我也没大改什么,可能就是那个排序的问题。

删掉那段Collections.sort(list, new Comparator<Entity>()  代码再发现场测试,果然不出错了。这种情况第一次遇见,想了半天没明白,只好头疼医头,脚疼医脚,对查询结果list 排序不再用集合的排序,而是转成数组,手动冒泡排序,改完之后测试 果然好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值