Frage

Man kann sich leicht verwenden JDO Syntax auf mehrere Parameter zur Abfrage wie folgt:

//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 ist einfach programmatisch einen String mit dem Filter zu bauen:

"customer == paramCustomer && date >= paramStartDate && date <=paramEndDate"

und andere strign mit der params Erklärung:

"com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"

Was ist nicht sofort zur Ausführung der Abfrage mit einer Strategie kommen je nachdem, welche params im Filter ist (und erklärt wurde), so dass Sie mit einer Reihe von wirklich hässlich und Ad-hoc-Kaskadierung am Ende if-else Aussagen mit allen möglichen Permutationen der Query-Ausführung (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 wird es in einer allgemeineren und effizienten Art und Weise zu tun.

Jeder Vorschlag?

War es hilfreich?

Lösung

fand ich eine Lösung in dem Verfahren query.executeWithArray

So kann ich Filter und param Erklärung aufbauen kann dynamisch eine Last, die tatsächlichen Objekte in ein Array von Objekt, die dann zu dem oben erwähnten Verfahren übergeben wird.

Eine weitere wichtige Methode ist executeWithMap weicht die Sie verwenden können Parameter zu binden, mit Namen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top