我有以下代码运行完美。它根据单个参数过滤记录。
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个参数。是否可以通过更多?
答案 0 :(得分:2)
您不能使用多个SetFilter()来设置多个条件。你必须使用一个if-like条件,所以它将是
query.setFilter("Email == pEmail && ItemCode == pItemCode");
对于带有逗号分隔列表的declareParameters,相同,如下所示
Query.declareParameters("String pEmail, String pItemCode");