Erstellen einer Datenbankabfrage (Query)
Methode | Beispiel |
---|---|
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. boolean sortAscending = true; Query<Auftrag> queryAuftrag = QueryProvider.create(Auftrag.class); queryAuftrag.where(Auftrag.Auftragsnr.notNull()) .and(Auftrag.Bestellwert.Gt(BigDecimal.ZERO)) .orderBy(Auftrag.Auftragsnr, sortAscending); Folgende Bedingungen können verwendet werden:
Und für Numerische Attribute:
Weitere Informationen finden sich in folgenden Klassen (unter api.nuclos.de): org.nuclos.api.businessobject.attribute.Attribute<T> org.nuclos.api.businessobject.attribute.NumericAttribute<T> |
execute | Diese Funktion führt eine Query aus und gibt eine typisierte Liste als Ergebnis zurück. List<Auftrag> results = QueryProvider.execute(queryAuftrag); for (Auftrag a :results) { BigDecimal bestellwert = a.getBestellwert(); } |
Erstellen einer Unterabfrage
Methode | Beschreibung |
---|---|
exist | Mit Hilfe der exist-Methode kann eine Subquery in eine äußere Query eingebunden werden. Die Verknüpfung von Query und Subquery findet ausschließlich über (Fremd)schlüssel statt. Hier ein Beispiel: Ziel der Abfrage ist die Ermittlung einer Liste von Bestellungen, die sich entweder im Status "neu" oder im Status "angelegt" befinden. Alle anderen Status sollen nicht weiter berücksichtigt werden:
// Status "neu" und "angelegt" kleiner gleich halbjährlich Query<nuclosstate> qryStatus = QueryProvider.create(nuclosstate.class); qryStatus.where(nuclosstate.Id.eq(BestellungSM.State_10.getId())); Query<Bestellung> queryBestellungen = QueryProvider.create(Bestellung.class); queryBestellungen.where(Bestellung.Bestellnr.notNull()) .exist(qryStatus, Bestellung.NuclosState) .orderBy(Bestellung.Bestellnr, true); List<Bestellung> results = QueryProvider.execute(querySub);
Zu beachten ist, dass die Subquery selbst nicht vom QueryProvider ausgeführt werden muss. Sie wird in ihrer fertigen "Struktur" der äußeren Query übergeben. |
Auslesen eines einzelnen Eintrages
Methode | Beispiel |
---|---|
getById | Mit Hilfe dieser Methode kann ein einzelnes BusinessObject anhand des Typs und der Id ausgelesen werden. // die Variable 'auftrag' stellt ein BusinessObject des Typs 'Auftrag' dar und besitzt eine Referenz auf ein Kundenobjekt Kunde k = QueryProvider.getById(Kunde.class, auftrag.getKundeId()); |