2017-07-24 39 views
0

我正在處理一個具有查詢JPA存儲庫的項目。其中一個查詢在同一個查詢中有AndOr,但它無法正常工作。JPA存儲庫查詢語言 - 與或與不正常工作

List<Partner> findDistinctByUserNameNotNullAndPartnerNoInAndUserNameLikeOrFirstNameLikeOrderByPartnerNo(
     List<Integer> partnerNos, String userName, String firstName); 

什麼情況是,當我通過no Filter返回各地65 rows,當我通過一個Filter例如「MAR」返回265 rows,因爲沒有過濾器的查詢獲取所有行這沒有任何意義。我所觀察到的是在UserNameLikeOrFirstNameLikeOr是劃分查詢。他正在尋找一個Partner列表內UserName LikeOR he just looks for a FirstName like something else.

我知道是什麼問題,但我不知道如何解決它。

簡而言之:如何將AndOr置於相同的JPA查詢並使其正常工作?

謝謝!

回答

0

如果你有想用命名的存儲庫的方法來實現它,它會像:

findDistinctByUserNameNotNullAndPartnerNoInAndUserNameLikeOrPartnerNoInAndFirstNameLikeOrderByPartnerNo(List<Integer> partnerNos, String userName, String firstName); 

,但它始終是推薦使用短期和可讀的方法名稱,以便您可以使用JPA NamedQueries@Query