Spring数据顺序搜索正确

时间:2019-01-07 18:47:41

标签: java spring spring-data-jpa

在我的存储库中,创建以下方法:

List<customer> findTop5ByNameContains(String name);

想象我有这些客户:

[{name: 'spongebob', id: 1}, {name: 'Bob dylan', id: 2}]

,当我搜索“ bob”时,结果如下: 海绵宝宝,鲍勃·迪伦。 如何首先对以参数开头的记录进行排序,然后再对包含参数的记录进行排序?

2 个答案:

答案 0 :(得分:1)

根据docs,您应使用“开头为”。试试这个:

 List<customer> findTop5ByNameStartingWith(String name);

答案 1 :(得分:0)

我应该建议您使用“示例匹配器”

即:

public List<Customer> search(Customer customer) {
  ExampleMatcher matcher = ExampleMatcher
            .matching()
            .withIgnoreCase()
            .withIgnoreNullValues()
            .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
            .withMatcher("name", startsWith())
            .withIgnorePaths("id");
  Example<Customer> query = Example.of(customer, matcher);

  return repository.findAll(query);
}