2012-11-26 2 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