Spring数据jpa存储库由多个元素查找

时间:2017-08-04 14:41:43

标签: java spring hibernate spring-mvc spring-data-jpa

我在我的项目中使用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中找不到更好的方法。

有什么想法吗?谢谢。

1 个答案:

答案 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值,并指定区分大小写等。

更多示例是here in the Spring Data Docs