Фильтрация записей в app-engine (Java) - PullRequest
1 голос
/ 29 апреля 2010

У меня следующий код работает отлично. Фильтрует записи на основе одного параметра.

 public List<Orders> GetOrders(String email)
  {
   PersistenceManager pm = PMF.get().getPersistenceManager();
   Query query = pm.newQuery(Orders.class); 
      query.setFilter("Email == pEmail"); 
      query.setOrdering("Id desc"); 
      query.declareParameters("String pEmail");
      query.setRange(0,50);      
   return (List<Orders>) query.execute(email);
  }

Теперь я хочу фильтровать по нескольким параметрам. sdate и edate - Дата начала и Дата окончания. В хранилище данных он сохраняется как дата (не строка).

public List<Orders> GetOrders(String email,String icode,String sdate, String edate)
  {
   PersistenceManager pm = PMF.get().getPersistenceManager();
   Query query = pm.newQuery(Orders.class); 
      query.setFilter("Email == pEmail");
      query.setFilter("ItemCode == pItemCode");
      query.declareParameters("String pEmail");
      query.declareParameters("String pItemCode");
               .....//Set filter and declare other 2 parameters
               .....// 
               ......
      query.setRange(0,50);      
      query.setOrdering("Id desc");
   return (List<Orders>) query.execute(email,icode,sdate,edate);
  }

Любая подсказка?


Моя первая проблема решена. Но все же есть некоторые проблемы

1: Как я могу фильтровать по параметру Date (Получение как строка в jsp)?

2: метод query.execute () поддерживает до 3 параметров. Можно ли пройти больше?

1 Ответ

2 голосов
/ 30 апреля 2010

Вы не можете использовать несколько SetFilter () для настройки нескольких условий. Вы должны использовать одно условие if-like, поэтому оно будет

query.setFilter("Email == pEmail && ItemCode == pItemCode");

то же самое для DeclareParameters со списком через запятую, как показано ниже

Query.declareParameters("String pEmail, String pItemCode");
...