4
人們可以很容易地使用JDO語法上的多個參數查詢,如下所示:如何動態地建立JDO查詢多個參數
//specify the persistent entity you're querying and you filter usign params
query = pm.newQuery(MyClass.class, " customer == paramCustomer && date >= paramStartDate && date <=paramEndDate ");
// declare params used above
query.declareParameters("com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate");
//pass the object declared as params
MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);
這是簡單的以編程方式生成與過濾字符串:
"customer == paramCustomer && date >= paramStartDate && date <=paramEndDate"
另一個與params聲明一致:
"com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"
什麼是no t immediate是提出一個執行查詢的策略,這取決於哪些參數在過濾器中(並且已經被聲明),所以最終會產生一些非常醜陋和特別的級聯if-else語句,查詢執行的可能的排列(所有的參數,可以只有第一,只是第二,第一和第二等):
MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);
我相信這是一個共同的任務和別人是這樣做的一個更一般和有效的方式。
有什麼建議嗎?
可以向我們展示代碼示例,弄亂了相同的問題。 – 2016-10-14 08:57:14