在使用 Pageable 访问值问题之前调用“Optional#isPresent()”

Posted

技术标签:

【中文标题】在使用 Pageable 访问值问题之前调用“Optional#isPresent()”【英文标题】:Call "Optional#isPresent()" before accessing the value issue with Pageable 【发布时间】:2019-05-14 12:28:54 【问题描述】:

我正在使用 Spring Data Mongo PageableSonar 给我以下错误:

Optional<Order> optional = pageable.getSort().stream().findFirst();
if(optional.isPresent()) 
    direction = pageable.getSort().stream().findFirst().get().getDirection();
    property = pageable.getSort().stream().findFirst().get().getProperty();


SortOperation sortOperation = Aggregation.sort(direction, property); 

错误:

在访问值之前调用“Optional#isPresent()”。

我尝试了几个选项,但没有任何效果。

【问题讨论】:

【参考方案1】:

当您在if 语句中再次调用pageable.getSort().stream() 时,您正在创建一个新的Optional,您需要调用.isPresent()

您应该重复使用已有的Optional,而不是一遍又一遍地创建流,如下所示:

Optional<Order> optional = pageable.getSort().stream().findFirst();
if(optional.isPresent()) 
    direction = optional.get().getDirection();
    property = optional.get().getProperty();

【讨论】:

谢谢!但是这样我真的很难为同样的东西写mockito。此处发布的问题:***.com/questions/56135373/…

以上是关于在使用 Pageable 访问值问题之前调用“Optional#isPresent()”的主要内容,如果未能解决你的问题,请参考以下文章

JPA Pageable 似乎在访问列表中的多个结果后获取所有行

如何使用 Pageable 按地图值排序

Junit mockito 测试Controller层方法有Pageable异常

使用 Pageable 字段测试端点时出现 JsonMappingException

SonarQube 8.1.0 在访问值之前抱怨调用“Optional#isPresent()”

如何记录Spring Boot JPA Pageable绑定值?