JPA中使用Sort排序时遇到的问题

org.springframework.data.jpa.repository.JpaRepository中可以使用Sort定义排序规则,但在使用时我发现了一些小问题

正常基于Pageable中的Sort字段排序

Sort sort = new Sort(Direction.ASC, "seqNum");
Pageable pageable = new PageRequest(0, size, sort);

但是,问题来了

JPA中使用Sort排序时遇到的问题_第1张图片

他报错了!!!
原因是这两个类的构造方法被定义为了私有或者保护的方法

JPA中使用Sort排序时遇到的问题_第2张图片

JPA中使用Sort排序时遇到的问题_第3张图片
我从网上查了好多相关资料,但他们用的时候貌似都可以直接实例化出来,甚至官网上也是这么用的,但我却不能这样用 (好气

JPA中使用Sort排序时遇到的问题_第4张图片
为了解决这个问题,我看了下这两个类的源码,好在类里面定义了相关的静态方法能够使用

JPA中使用Sort排序时遇到的问题_第5张图片

JPA中使用Sort排序时遇到的问题_第6张图片

所以可以通过调用这些写好的静态方法而不用实例化就能达到相同的效果

Sort sort = Sort.by(Sort.Direction.DESC,"blogs.size");
Pageable pageable = PageRequest.of(0,size,sort);

PS:原因是springboot版本太新导致的


原文链接:https://blog.csdn.net/qq_44039966/article/details/102713779

==================================================================

 

    @Test
    public void findList() throws Exception {
        // Sort sort = new Sort(Sort.Direction.DESC,"id");
        // Sort.Order order=new Sort.Order(Sort.Direction.DESC, "order_id");
        // PageRequest request  = new PageRequest(0, 2, Sort.by(order));        //这种写法是低版本的spring boot可以这么写,高版本的要下面这么写

        Sort sort = Sort.by(Sort.Direction.DESC,"orderId");       //注意这里不是order_id
        Pageable pageable = PageRequest.of(0,2,sort);

        Page result =  orderService.findList(BUYER_OPENID, pageable);
        Assert.assertNotEquals(0, result.getTotalElements());
    }

 

你可能感兴趣的:(java)