1
我有以下代碼完美運行。它根據單個參數篩選記錄。過濾應用程序引擎中的記錄(Java)
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個參數。是否有可能通過更多?
是它的工作原理..謝謝.. 怎麼樣用一個單一的,如果類似情況,所以這將是
同樣用逗號separeted列表declareParameters日期參數?以及如果我需要傳遞3個以上的參數呢?它最多隻支持3個參數。 – Manjoor 2010-05-01 14:12:33
如果需要超過3個參數,你可以使用query.executeWithMap API和傳遞鍵/值的散列地圖爲您的參數。例如map.put(「param_name_1」,param_1_value); – 2011-12-06 14:35:09