Regeln für die Bearbeitung des Datentyps in EJB-Abfragen

Werden für die Arbeit mit Datentypen EJB-Abfragen verwendet, müssen bestimmte Regeln befolgt werden.

In einer SELECT-Klausel können Sie ein CMP-Feld beliebigen Typs verwenden. In Suchkriterien sowie in Gruppierungs- und Sortieroperationen dürfen Sie jedoch nur Felder der folgenden Typen verwenden:

Bedingungen:
  • Ein CMP-Feld mit einem der zuvor aufgelisteten Basistypen wird mit einem Umsetzer einer SQL-Spalte zugeordnet.
  • Das CMP-Feld erscheint vor einem Basisvergleichselement.
  • Dem Prädikat folgt ein Literal oder ein Eingabeparameter.
Wenn alle zuvor genannten Bedingungen zutreffen, wird die Methode toData() des Umsetzers verwendet, um den SQL-Suchwert zu berechnen.

Angenommen, ein Umsetzer ordnet dem Zeichenfolgewert "Zehn" den ganzzahligen Wert 10 zu. Die EJB-Abfrage

e.cmp = 10

wird dann in die folgende SQL-Abfrage konvertiert:

column = 'Zehn'

Falls Sie ein komplexeres Vergleichselement (oder Prädikat), beispielsweise

e.cmp * 10 >  e.salary

in eine FINDER- oder SELECT-Abfrage aufnehmen, dann erhalten Sie die Fehlernachricht Cannot push down query. Verwenden Sie den dynamischen EJB-Abfrageservice für solche multifunktionalen Abfragen. Die Laufzeitumgebung für dynamische Abfragen verarbeitet das Prädikat im Anwendungsserver.

Generell werden Gleichheit, Sortierfolge und Nullwerte von Umsetzern nicht geändert. Sollte ein Umsetzer diese Voraussetzungen nicht erfüllen, sollten Sie ihn nicht für Vergleichsoperationen mit CMP-Feldern verwenden.

In einer Vergleichsoperation oder einem Ausdruck kann kein Benutzertyp verwendet werden. Sie können jedoch in einem Pfadausdruck Teilfelder für den Benutzertyp verwenden. Nehmen wir an, es gibt ein CMP-Feld addr vom Typ com.exam.Address mit den Teilfeldern street, city und state. Für eine Abfrage zu diesem CMP-Feld ist die folgende Syntax ungültig:

e.addr =  ?1

Eine Abfrage, die eines der Teilfelder bezeichnet, ist jedoch gültig:

e.addr.street = ?1

Mit der Java-Serialisierung kann ein CMP-Feld einer SQL-Spalte zugeordnet werden. Wird das CMP-Feld in Prädikaten oder Ausdrücken für Deployment-Abfragen verwendet, erscheint in der Regel die Fehlernachricht Cannot push down query. Die Laufzeitumgebung des dynamischen Abfrageservice liest und entserialisiert bei der Verarbeitung alle Instanzen des Benutzertyps im Anwendungsserver.

Dieser kostenintensive Prozess geht jedoch zulasten des Durchsatzes. Durch Verwendung eines Composers in einer Deployment-EJB-Abfrage können Sie Leistungseinbußen jedoch vermeiden. Wenn Sie im obigen Beispiel das Feld addr einem Binärtyp zuordnen möchten, verwenden Sie einen Composer, um jedes Teilfeld einer binären Spalte in der Datenbank zuzuordnen.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cque_datatyperules
Dateiname:cque_datatyperules.html