One JDO Syntax leicht verwenden können, auf mehrere Parameter abgefragt werden, wie folgt:Wie dynamisch JDO Abfragen auf mehrere Parameter bauen
//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);
Es einfach ist programmatisch eine Zeichenfolge mit dem Filter zu bauen:
"customer == paramCustomer && date >= paramStartDate && date <=paramEndDate"
und andere strign mit der Erklärung params:
"com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"
Was nicht ist t sofort ist es, eine Strategie für die Ausführung der Abfrage in Abhängigkeit davon, welche Params sind im Filter (und wurden deklariert), so dass Sie am Ende mit einer Reihe von wirklich hässlich und Ad-hoc-Cascading If-else-Anweisungen mit allen mögliche Permutationen der Ausführung der Abfrage (alle params, nur die erste, nur die zweite, erste und zweite etc ...):
MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);
ich bin sicher, dass dies eine gemeinsame Aufgabe ist und jemand anderes tut es in ein allgemeiner und effizienter Weg.
Irgendwelche Vorschläge?
Können Sie uns bitte die Codebeispiel zeigen, mit dem gleichen Problem durcheinander gebracht. –