在我的存储库中,创建以下方法:
List<customer> findTop5ByNameContains(String name);
想象我有这些客户:
[{name: 'spongebob', id: 1}, {name: 'Bob dylan', id: 2}]
,当我搜索“ bob”时,结果如下: 海绵宝宝,鲍勃·迪伦。 如何首先对以参数开头的记录进行排序,然后再对包含参数的记录进行排序?
答案 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);
}