Die Dokumentation ab Version 39.5.17 von PLANTA project finden Sie in der neuen PLANTA Online-Hilfe.

HQL

Allgemeines

Informationen
  • HQL (Hibernate Query Language) ist eine Abfragesprache, mit der man Klassen und Objekte direkt ansprechen kann, ohne deren Namen in der Datenbank kennen zu müssen (z.B. "project.pr_id" anstatt "DI001001 FROM DT461").
  • Abfragen werden intern in SQL-Statements übersetzt und ausgeführt.
  • HQL-Namen können aus dem Data Dictionary, den Entity-Namen (für Tabellen) bzw. DI-Python-IDs (für Spalten) ausgelesen werden.

Hinweise

  • Über HQL werden lediglich SQL-Abfragen direkt an die Datenbank abgesetzt. Weitergehende Funktionalitäten von PLANTA project, wie z.B. abhängiges Speichern oder Löschen, ist dadurch nicht möglich.
  • Wird z.B. ein Projekt über HQL gelöscht, werden die untergeordneten Projektstrukturen nicht automatisch mitgelöscht.
  • Generell verwendet PLANTA project derzeit die Hibernate-Version 4.3.4 mit den darin enthaltenen Funktionalitäten inkl. HQL: http://hibernate.org/orm/documentation/4.3.

Modul HQL

Information
  • Um HQL verwenden zu können, muss zuerst das hql-Modul importiert werden.

Beispiel (classic)

from hql import hql
or (preferred)
import hql

Methoden

Information

  • Für HQL stehen drei Funktionen zur Verfügung.

search_record

Details

  • Diese Methode gibt eine Liste von DTP Records zurück.
hql.search_record(String hql)

Beispiel

before = hql.search_record("from Project project where project.pr_id='{}'".format(id))

query

Details

  • Diese Methode gibt eine Liste von Daten (in Listenform) zurück, entsprechend db_select().
hql.query(String hql)

Beispiel

before = hql.query("select project.pr_id, project.project_note from Project project where project.pr_id='{}'".format(id))

modify

Details

  • Mit hql.modify können Update- bzw. Delete-Statements durchgeführt werden. Zurückgegeben wird die Anzahl der Änderungen in der DB, entsprechend db_modify().
hql.modify(String hql)

Beispiel Update:

hqlString="update Project project set project.project_name='{}' where project.pr_id='{}'".format(project2.rec.project_name.get_value(), project1.pr_id)
hql.modify(hqlString)

Beispiel Delete:

hqlDelete = "delete Module m where m.id_ = '{}'".format(module.id.get_value())
result = hql.modify(hqlDelete)

Hinweise

  • Properties werden in HQL nur über Python-IDs identifizert.
  • Namen wie "id","class", "enum", "const" sind von Hibernate und Java reserviert. Auf alle Python-IDs, die diese Namen verwenden, kann man in HQL mit Python-ID und Unterstrich zugreifen, z.B. ("id_").
  • Anstatt Tabellennamen werden die Namen der Entitäten verwendet.

Dokumentation zu HQL

Informationen
  • In HQL verwendet man anstatt dem Tabellenamen den Entitätsnamen und anstatt dem Spaltennamen den Property-Namen.
    • Den Entitätsnamen kann man im Data Dictionary (Feld Entity-Name) nachlesen. Falls er nicht eingetragen ist, dann ist der Entitätsname DTxxx.
    • Die Entitäten sind in PLANTA project momentan noch nicht über Associations miteinander verknüpft. Dies bedeutet, dass Joints zwischen diesen nicht genutzt werden können.
  • Der Property-Name entspricht dem der DI-Python-ID. Falls diese nicht eingetragen ist, dann ist der Property-Name "DIxxxxx".

Beispiel

hql.search_record(" from Project p where p.pr_id = '4711' " )   
  • In HQL sollen die UUIDs als Strings übergeben werden.
Beispiel
import hql
from ppms import ppms

project_record = ppms.search_record(461, ['4711'], ['uuid'])
uuid = project_record.uuid.get_value()

query = "SELECT project.project_name from Project project where project.id = '{uuid}'"

result = hql.query(query.format(uuid=uuid))

ppms.ui_message_box(result) # [['Elektrohängebahn']]

Hinweis

Vorteile von hql.search_record und ppms.search_record

ppms.search_record()


searchRecord.png
  • Geht nur auf die Datenbank, falls der Record nicht vollständig existiert.

hql.search_record()


hqlsearch.png
  • Suche auf mehr als einem Record.
  • Suche nicht auf den Primärschlüssel beschränkt, sondern kann alles, was auch in einer HQL where-Klausel möglich ist.
Topic attachments
ISorted ascending Attachment History Size Date Comment
Pngpng hqlsearch.png r1 29.7 K 2014-09-19 - 15:59 hql
Pngpng searchRecord.png r1 28.7 K 2014-09-19 - 15:58 searchrecod

         PLANTA project









 
  • Suche in Topic-Namen

  • Suche in Topic-Inhalten
This site is powered by the TWiki collaboration platform Powered by Perl