2016-06-28 126 views
0

多的話我有一個PagingAndSortingRepository:搜索春數據倉庫

public interface BrowserLinkPagination extends PagingAndSortingRepository<BrowserLink, Long> { 
    List<BrowserLink> findByUserAndUriLike(User user, String uri, Pageable pageable); 

} 

現在我想要做的就是尋找在uri列多個單詞。 Like非常接近,但它依賴於單詞在字符串中的出現方式。
編輯澄清:順序依賴正是我不想要的。我希望搜索字符串與訂單無關,因此LIKE不是我正在尋找的。

我想這是很常見的發現,有幾個搜索條件尋找一個字符串,我知道我可以通過提供SQL來執行它,但我很curriuous,如果有一種方式來表達春季資料的條款? am

我使用postgresql進行生產,並使用h2進行開發/測試。

+0

我認爲不認爲它解決了你的問題,但你可以看看「IN」:http://stackoverflow.com/questions/23902954/spring-data-can-it-find-by-two-values-of -'-same-field-without-writing-the-imp – alexbt

+0

據我可以告訴'IN'查找像id或類似的東西精確匹配。我想要更多的子字符串搜索。 – sveri

+0

如果順序很重要,那麼使用'LIKE'來替換''first first%second%%third''?性能會很糟糕,但你應該能夠找到你要找的東西。 –

回答

0

在方法名中使用In。在你的情況下,它可能看起來像:

public interface BrowserLinkPagination extends PagingAndSortingRepository<BrowserLink, Long> { 
    List<BrowserLink> findByUserAndUriIn(User user, List<String> uri, Pageable pageable); 
} 

當您正在使用由Spring創建的標準API,從瀏覽器URI的使用是非常簡單 - 只需在地址:

/your_api/browserlink/search/findByUserAndUriIn?user=xxx&uri=uri1,uri2,uri3