如何使用带有可分页的 mongorepository 修复转换错误

Posted

技术标签:

【中文标题】如何使用带有可分页的 mongorepository 修复转换错误【英文标题】:How to fix convertion error using mongorepository with pageable 【发布时间】:2021-06-02 09:16:29 【问题描述】:

当 pageable 的页面为 3 或更高(值为 1 或 2 时,它可以工作)时,我收到以下错误。错误来自对 mongorepository 的调用。

值“string”从类型 [java.lang.String] 转换为类型 [java.lang.Boolean] 失败;嵌套异常是 java.lang.IllegalArgumentException: Invalid boolean value 'string'

服务是:

public Pagination<Foo> getList(FooQueryMap map) 
    final int size = 50;
    var pageRequest = PageRequest.of(map.getPage() - 1, size);
    
    var bar = receiptRepository
                    .getPageableOfFoo("" + map.getNumber(),pageRequest);
    
    return paginationFactory.toPaginatedResponse(bar);

还有存储库:

public interface FooRepository extends MongoRepository<Foo, String> 

    @Query(value = "'foo.field': ?0")
    Page<Foo> getPageableOfFoo(String field, Pageable pageable);

我不知道是什么导致了这个问题,我怀疑可能是 mongo 存储库中的错误。

【问题讨论】:

【参考方案1】:

该错误与可分页或查询本身无关。发生错误是因为 mongodb 的垃圾。 Foo 上有一个属性,前一段时间是一个字符串,当前是一个布尔值,有一条记录,该属性以值“字符串”保存,mongo 转换器无法将此值转换为布尔值,然后这个抛出错误。

【讨论】:

以上是关于如何使用带有可分页的 mongorepository 修复转换错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使 saveAll 结果返回可分页?

是否有使集合类可分页的通用设计模式?

如何在 Spring Data JPA 中使用带有分页的投影接口?

带有分页的 UIScrollView 的约束

Mybatis是如何进行分页的?

Neo4j,在返回可分页结果的同时查询多个 lucene 索引