Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Der QueryProvider stellt Möglichkeiten zur Verfügung, Daten aus dem Nuclos-System und laden und in Form von BusinessObjects oder Listen von BusinesObjects in Regeln bereitzustellen. Das folgende Beispiel soll das Laden einer bekannten Bestellung innerhalb einer Regel "Anlegen" darstellen.

Beispiele

Die folgenden Beispiele zeigen die gängigsten Abfragemöglichkeiten. Detaillierte Ausführung über Methoden und Funktionen finden Sie in der API. Nuclos-API

Einfache Abfragen

Im folgenden Beispiel wird eine Abfrage mit Such-Parameter für ein Feld ausgeführt.

Codeblock
BusinessObjectQuery<Bestellung> mainQuery = QueryProvider.create(Bestellung.class);
    
mainQuery.where(Bestellung.Eknetto.Lt(10.0))
         .and(Bestellung.Eknetto.Gt(5.0));
        
List<Bestellung> result = QueryProvider.execute(mainQuery);

 

Auch Abfragen, ob ein Wert überhaupt vorhanden ist oder nicht, sind möglich:

 

Codeblock
BusinessObjectQuery<Bestellung> mainQuery = QueryProvider.create(Bestellung.class);
    
mainQuery.where(Bestellung.Eknetto.Lt(10.0))
         .and(Bestellung.Eknetto.Gt(5.0))
         .and(Bestellung.Nr.notNull())
         .and(Bestellung.IstAbgeschlossen.IsNull)
        
List<Bestellung> result = QueryProvider.execute(mainQuery);

 

Komplexe Abfrage mit SubQuery

Nuclos bietet die Möglichkeit innerhalb von Regeln SubQueries zu verwenden. Wichtig ist, dass zur Unterabfage das Verbindungsfeld (ForeignKey) von dem Element der inneren zur äußeren Abfrage angegeben wird.

Dazu ein Beispiel:

...

Funktionsumfang

MethodeBeschreibung
create

Mit Hilfe dieser Methode kann ein typisiertes Query-Object angelegt werden, mit dessen Hilfe Datenbankabfragen ausgeführt werden können. Dabei wird auf eine abstrakte Query-Language zurückgegriffen. Abfragen mit SQL-Syntax sind nicht möglich. Die übergebene Klasse muss vom Typ BusinessObject sein. Das Query-Object als Rückgabewert ist ebenfalls typisiert und muss dem übergebenen BusinessObject entsprechen. Zum Ausführen der Query muss die unten beschriebene execute()-Methode verwendet werden.

Codeblock
public static <T extends BusinessObject> Query<T> create(Class<T> type) {
   return getService().createQuery(type);
}
execute

Diese Methode führt eine typisierte Query auf der Datenbank aus. Da die Suchabfrage generell mehrere Ergebnisse zurück liefern kann, ist der Rückgabewert vom Typ List. Diese ist ebenfalls typisiert und ist bei keinem gefundenen Treffer leer, aber nicht null.

Codeblock
public static <T extends BusinessObject> List<T> execute(Query<T> query) {
   return getService().executeQuery(query);
}
getById

Diese Methode ermöglicht die Suche nach einem konkreten Datenbankeintrag. Dazu muss der Typ und die Id angegeben werden. Wird kein Element gefunden, ist der Rückgabewert null.

Codeblock
public static <T extends BusinessObject> T getById(Class<T> type, Long id) {
   return getService().getById(type, id);
}