2014-06-20 44 views
1

我寫了下面這段代碼來做選擇性查詢,但它似乎沒有工作。帶有if else查詢的Java Play Framework查找程序

public static List<Item> selectBy(String name, String attr) { 
    Query<Item> find = myFinderInstance; 
    if (name != null) { 
     find.where().eq("name", name); 
    } 
    if (attr != null) { 
     find.where().eq("attr", attr); 
    } 

    return find.findList(); 
} 

基本上我希望查詢能夠一起工作。要麼只有名稱,只能通過屬性或兩者兼而有之。但只有1個功能。

這不可能或者我做錯了嗎?

回答

2

可以有條件地添加PARAMS到ExpressionList,在這種情況下,如果所有PARAMS將是空的,將返回所有對象:如果你喜歡空集,如果未參數是null剛開始你的方法

import com.avaje.ebean.ExpressionList; 
import static com.avaje.ebean.Expr.eq; 

// ... 

public static List<Item> findByNameAndAttr(String name, String attr) { 

    ExpressionList<Item> myQuery = find.where(); 

    if (name != null) myQuery.add(eq("name", name)); 
    if (attr != null) myQuery.add(eq("attr", attr)); 

    return myQuery.findList(); 
} 

可選附條件:

if (name == null && attr == null) return new ArrayList<>(); 
+0

感謝,作品像一個魅力。 – KdgDev