2015-01-12 6 views
6

Ich verwende derzeit greenDAO als ORM für meine Android-Anwendung. Beim Versuch, eine GROUPBY-Klausel auszuführen, bin ich auf ein Problem gestoßen. greenDAO hat keine API/Hilfsmethoden zum Ausführen von groupby-Klauseln. Daher habe ich mich entschieden, die für die AbstractDAO-Klasse verfügbaren Methoden query() oder queryRaw() zu verwenden, wo ich eine gültige SQL-Abfrage übergeben kann. ABER, diese beiden Methoden geben eine java.util.List zurück, was mich verwirrt ist, dass ich Werte von Spaltenaliasen im Ergebnis bekommen kann. ZBGreenDAO groupby Klausel

SELECT COUNT(ID) AS NUMOFRECORDS, NAME FROM PERSONS GROUP BY AGE 

Mein Unternehmen wird Namen und Alte Felder haben, aber ich eine Spalte alias NUMOFRECORDS erstellt, die nicht Teil der Entity ist.

Schätzen Sie Ihre Hilfe!

Antwort

1

Ich bin mit einem ähnlichen Problem fest. Es scheint, dass greenDao nicht GROUP BY querys nicht unterstützt und es wird nicht in der Zukunft ändern, je nachdem, was sie sagte here:

GROUP BY ist SQL-ish, so halten Sie sich an SQL. greenDAO bezieht sich auf Entitäten, bei denen GROUP BY nicht unterstützt wird.

5

Dies ist eine alternative Lösung für Ihre Frage: Fügen Sie die ORDER BY Insize von Wo.

Ex:

List<Taxi> list = daoSession.getDaoTaxi().queryBuilder().where(new WhereCondition.StringCondition("1 GROUP BY cant_aciento")).list();

+0

Es ist schwierig, aber funktioniert und zuverlässig – AlexeyVMP