[英]Are there conditions in Spring data queries?
我有一個Spring Repository Interface和以下方法,可以根據人員的organizationalUnit
和type
查找人員。
public interface PersonRepository extends CrudRepository<Person, Integer> {
@Query("SELECT p FROM Person p "
+ "JOIN p.organizationalUnit ou "
+ "JOIN p.type type "
+ "WHERE p.name = ?1 "
+ "AND ou = ?2 "
+ "AND type = ?3")
List<Person> filterPerson(String name, OrganizationalUnit u, Type t);
}
上面的代碼可以正常工作,但是如果u
或t
的給定值為null
,則無論其類型或單位如何,我都需要查找所有人員。
有沒有一種方法可以根據條件聲明語句?
就像是:
@Query("SELECT p FROM Person p "
+ "JOIN p.organizationalUnit ou "
+ "JOIN p.type type "
+ "WHERE p.name = ?1 "
+ {?2 != null ? "AND ou = ?2 " : ""}
+ {?3 != null ? "AND type = ?3 " : ""}
)
您可以這樣簡單地進行操作:
@Query("SELECT p FROM Person p "
+ "JOIN p.organizationalUnit ou "
+ "JOIN p.type type "
+ "WHERE p.name = ?1 "
+ "AND (?2 is null OR ou = ?2)"
+ "AND (?3 is null OR type = ?3)"
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.