2014-11-25 45 views
0

我有一個字符串列表,其中包含實體中多個屬性的搜索項。我想查詢數據庫並檢索任何具有這些字符串中任何一個指定屬性的實體。例如,說我有部分名稱的列表:查詢具有值列表的多個實體屬性

//contents of the list (for visual purposes) 
["Mi", "Chr", "Leo", "Jo", "Par"] 

而且,讓我們假設,我們不知道該列表的大小。現在,假設我有一個實體具有以下屬性:

String firstName; 
String lastName; 

我如何可以檢索(最好是在一個查詢),其名或姓包含任何列表中的字符串的所有實體?

類似的信息(僞代碼):

SELECT u FROM User u WHERE u.firstName LIKE (%Mi% OR %Chr% OR %Leo% OR %Jo% OR %Par%) 
    OR u.lastName LIKE (%Mi% OR %Chr% OR %Leo% OR %Jo% OR %Par%) 

如果有像一個像子句會是完美的,但不幸的是,我不相信JPQL支持。那麼,這怎麼可能呢?

回答

0

此代碼使用IN條件構建查詢。

String query = ""; 
String whereClause = ""; 

for(int i = 0; i < LIST.size(); i++) { 
    // using * wildcard 
    whereClause += "\"*" + LIST.get(i).toString() + "*\","; 
} 

query = String.format("SELECT User.firstName, User.lastName FROM User WHERE User.firstName IN (%s) OR User.lastName IN (%s);", whereClause, whereClause); 
相關問題