如何找到名字中包含所有字符序列的所有员工?

How to find all employees that contain all character sequenences in their name?

我正在尝试编写一个 Micronaut Data JPA 查找器来查找所有 employees 与字符串列表匹配的内容。

给定以下员工(名字、姓氏)

假设用户使用 Silvio 这样的查询查询系统,那么结果应该是

如果查询是 Frank,结果应该是

如果查询是 frank pot 结果也应该(不区分大小写)

我设法为下面列出的单个字符串编写了一个查找器

Page<Employee> findAllByLastNameIlikeOrFirstNameIlike(
      String lastName, String firstName, Pageable pageable);

对于像 frank pot 这样的查询,我想 tokenize/split 将字符串添加到列表 ["frank", "pot"] 并且是想知道我是否可以实现类似

的东西
Page<Employee> findAllByLastNameIlikeOrFirstNameIlike(
      List<String> lastName, List<String> firstName, Pageable pageable);

甚至更好地使用 JPA 的条件 API。您将如何实施这样的搜索查找器?能给我指路吗?

我总是首先想到的是如何简单地做到这一点 SQL。 发现一个 MySQL Like multiple values

所以我建议最好的方法是使用条件 API 并构建您自己的动态查询。 看看第一个示例 https://micronaut-projects.github.io/micronaut-data/latest/guide/#repositories,它为您提供了 micronaut 所需的一切。

如果我有某种动态查询,如 'give me everything from start to end but if start is not specified just give me everything before end ... '

,我也会使用标准 api