代码之家  ›  专栏  ›  技术社区  ›  Manjoor

App Engine(Java)中的过滤记录

  •  1
  • Manjoor  · 技术社区  · 15 年前

    下面的代码运行得很好。它根据单个参数过滤记录。

     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:如何按日期参数过滤(在jsp中作为字符串获取)?

    2:query.execute()方法最多支持3个参数。有可能通过更多吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   David Larochette    15 年前

    不能使用multiple setfilter()设置多个条件。你必须使用一个如果喜欢的条件,所以

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

    对于带有逗号分隔列表的declareparameters,如下所示

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