当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring data Rest对数据进行不区分大小写排序?

杨志强
2023-03-14

我喜欢在我的SortimentRespository中有一个findAll方法,它允许排序和分页,并且我可以在其中传递一个参数,该参数包含当前页面和页面的大小以及我想要排序的列的名称(不区分大小写)。

请求应类似于:

http://localhost:8081/x/rest/sorti ments?尺寸=20

或 http://localhost:8081/x/rest/sortiments?size=20

我在我的存储库中尝试了以下方法

    @Transactional
    public interface SortimentRepository extends JpaRepository<Sortiment,         RootKey>, SortimentRepositoryCustom {
        List<Sortiment> findAll();            
        // Query 1
        Page<Sortiment> findAllIgnoreCase(Pageable pageable);

        // Query 2
        Page<Sortiment> findAllByOrderByNameAscIgnoreCase(Pageable pageable);

        // Query 3
        @Query("select s from Sortiment s order by LOWER(s.name)")
        Page<Sortiment> findAllOrderByNameIgnoreCase(Pageable p);
    }

结果

查询1:运行org.springframework.beans.factory时出错。BeanCreationException:创建名为“sortmentRepository”的bean时出错:初始化方法调用失败;嵌套异常为org.springframework.data.mapping。PropertyReferenceException:找不到排序类型的属性!

查询2:org . spring framework . beans . factory . beancreationexception:创建名为“sortimentRepository”的bean时出错:调用init方法失败;嵌套异常为org . spring framework . data . mapping . propertyreferenceexception:找不到Sortiment类型的属性ignoreCase!

查询3:我什至在链接搜索下的hal浏览器中看不到此方法

有没有人知道,我怎样才能实现无组织的案件排序?如果我有全局性的东西,那就太好了,因为几个存储库需要不区分大小写的findAll方法。。。

共有1个答案

周作人
2023-03-14

首先,确保<code>Sortment

Spring数据遵循Repository方法名称的一些规则(在下面的链接中给出),您需要更改查询方法,如下所示:

在服务层中:

Pageable pageable = new PageRequest(pageNumber,pageSize,Sort.Direction.ASC,name);

存储库类:

@Transactional
public interface SortimentRepository extends JpaRepository<Sortiment,RootKey>, 
     SortimentRepositoryCustom { 
        Page<Sortiment> findAll(Pageable pageable);
  }

您可以参考此处以获取示例。

 类似资料:
  • 如何在索引字段上搜索cypher 2.0/Neo4j 2.1.7不区分大小写? 正则表达式不使用索引

  • 问题内容: 默认情况下,单词“ Word”和“ word”不相同。如何使Lucene不区分大小写? 问题答案: 最简单的方法是降低所有可搜索的内容以及查询的大小写。请参阅 文档。您也可以将查询用于不区分大小写的搜索,因为它绕过了。 如果需要,您可以将内容存储在不同的字段中以捕获不同的案例配置。

  • 问题内容: 如何更改strpos以使其不区分大小写。原因是如果的名称是 MadBike ,而搜索字词是 bike ,则该链接不会向我显示。我主要关心的是代码的速度。 问题答案: 您正在寻找 如果您无法使用该功能,则只需先调用两个字符串即可。 编辑 : 如果要查找带有变音符号的子字符串,将无法正常工作。 例如: 返回,但应该返回。

  • 考虑: 我试图在每边只显示100个字符,中间是搜索字符串。 这段代码实际上可以工作,但它是区分大小写的。如何使其不区分大小写?

  • 我使用vaadin-grid组件作为一个视图,其中显示了一些网格数据,包括文本。在文本的列中,排序似乎不区分大小写。排序只发生在以大写字母开头的文本中,而以小写字母开头的文本将被忽略。 我检查了vaadin-grid-sorter的API文档,它是vaadin-grid中用于排序的辅助元素,但无法得到所需的结果。 请建议其他方法。我们将不胜感激。

  • 问题内容: 我有一个需要在JavaScript中排序的字符串数组,但不区分大小写。如何执行呢? 问题答案: 在(几乎:)单线 导致 而 结果是