Ich bin auf der Suche nach einer Möglichkeit, eine Abfrage auszuführen, die ein JOIN erfordert. Gibt es eine Möglichkeit, dies in einer vorbereiteten Anweisung zu tun, oder ist die rawQuery
die einzige Option, die ich habe. Wenn rawQuery
die einzige Option ist, gibt es eine Möglichkeit, die zurückgegebenen Objekte automatisch den Objekten des implementierten Dao zuzuordnen.
Ich habe die Dokumente und Beispiele durchforstet, kann aber nichts finden, was mir erlaubt, das Ergebnis der Rohdatenbank einer ORM-Objektklasse zuzuordnen.
ORMLite unterstützt einfache JOIN-Abfragen . Sie können dazu auch rohe Abfragen verwenden.
Sie können die Dao.getRawRowMapper()
verwenden, um die Abfragen so zu ordnen, wie Sie sie gefunden haben, oder Sie können einen benutzerdefinierten Mapper erstellen. Die Dokumentation enthält den folgenden Beispielcode, der zeigt, wie Sie das String[]
in Ihr Objekt mappen:
Ich habe eine Möglichkeit gefunden, eine Ergebnismenge automatisch einem Modellobjekt zuzuordnen.
%Vor% Der Schlüssel ist, den Zeilenmapper von Ihrem Objekt Dao
mit getRawRowMapper()
abzuziehen, das die Zuordnung für Sie übernimmt. Ich hoffe, das hilft jedem, der es findet.
Ich würde immer noch gerne die Möglichkeit haben, Joins innerhalb von QueryBuilder
zu machen, aber bis das unterstützt wird, ist das meiner Meinung nach das nächstbeste.
Rohe automatische Abfragezuordnung
Ich hatte Probleme beim Zuordnen von Feldern aus benutzerdefiniertem SELECT, die Spalten zurückgeben, die in keinem Tabellenmodell vorhanden sind. Also habe ich die benutzerdefinierte RawRowMapper
erstellt, die Felder von der benutzerdefinierten Abfrage zum benutzerdefinierten Modell zuordnen kann. Dies ist nützlich, wenn Sie eine Abfrage mit Feldern haben, die keinem Tabellenmapping-Modell entsprechen.
Dies ist RowMapper , der die automatische Zuordnung von Abfragen durchführt:
%Vor%Und hier ist die Verwendung :
%Vor% Dadurch wird List<Model>
mit zugeordneten Ergebniszeilen an Model zurückgegeben, wenn die Spaltennamen der Abfrage und @DatabaseField(columnName
identisch sind