2012-11-26 79 views
2

如何通過幾個參數使用Objectify 4正確過濾,考慮到其中一些參數可能會變空,這意味着我不想過濾掉這些參數? 例子: 請考慮我要過濾是這樣的:物化過濾器空值

 releases = ofy().load().type(Release.class) 
       .filter("user.name", searchCriteria.getName()) 
       .filter("category", searchCriteria.getCategory()) 
       .filter("city", searchCriteria.getCity()).list(); 

爲了配合我上面說的,我現在有下面的代碼,檢查每其中我的參數來空的,所以我不時間「T把它們放在過濾器在這種情況下:

if (!nameEmpty && !categoryEmpty && !cityEmpty) { 
     releases = ofy().load().type(Release.class) 
       .filter("user.name", searchCriteria.getName()) 
       .filter("category", searchCriteria.getCategory()) 
       .filter("city", searchCriteria.getCity()).list(); 
    } else if (!nameEmpty && !categoryEmpty) { 
     releases = ofy().load().type(Release.class) 
       .filter("user.name", searchCriteria.getName()) 
       .filter("category", searchCriteria.getCategory()).list(); 
    } else if (!nameEmpty && !cityEmpty) { 
     releases = ofy().load().type(Release.class) 
       .filter("user.name", searchCriteria.getName()) 
       .filter("city", searchCriteria.getCity()).list(); 
    } else if ... 

     ... 

如何避免過濾這種蹩腳的方式只有一個使用物化4線(或幾個)做的?

回答

5
Query<Release> query = ofy().load().type(Release.class); 

if (!nameEmpty) 
    query = query.filter("user.name", searchCriteria.getName()); 

if (!categoryEmpty) 
    query = query.filter("category", searchCriteria.getCategory()) 

if (!cityEmpty) 
    query = query.filter("city", searchCriteria.getCity()); 

releases = query.list(); 
+0

完美,謝謝。會投票積極但我還不能...... – Joar