我在我的项目中使用Spring Data JPA
。所以在存储库中,我通过以下方式定义列表:
List<Branch> findByNameContainingAndByTypeContaining(String name, String type)
它适用于这种情况,但是,在搜索表单中,我有超过10个搜索条件,这意味着在搜索方法中,它需要10个以上的元素,并且正确地说,它们的字段具有价值。
例如:
name: abc
type: primary
enabled: true
createdBy: null
modifiedBy: null
and so more
对于findBy
方法,如果我发送空白,它可以工作但是空值。而且,搜索的字段很多。所以我正在寻找一种更好的方法来搜索这样的表单。在Grails框架中,我可以为此创建nameQueries,但在Spring JPA
中找不到更好的方法。
有什么想法吗?谢谢。
答案 0 :(得分:2)
您可以使用QueryByExample API,例如:
Branch branch = new Branch();
branch.setName("Foo");
branch.setEnabled(true)
ExampleMatcher matcher = ExampleMatcher.matching();
Example<Branch> example = Example.of(branch, matcher);
branchRepository.findAll(example)
您可以选择包含或忽略null
值,并指定区分大小写等。