2017-08-04 106 views
1

我在我的項目中使用Spring Data JPA。因此,在庫中,我用下面定義的列表:彈簧數據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中找不到更好的方法。

任何想法?謝謝。

回答

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

+0

哇,這對我來說是新的,非常感謝。 –

+0

很高興我可以幫助:) – dkanejs

+0

嗨,只是有一個問題,現在,我有一個搜索表單,與fromDate和toDate,它需要與分支的日期時間字段比較以獲取數據,我該怎麼做?謝謝。 –