Home Forum Nuclos Entwicklung Makros und Regeln Frage zum QueryProvider

Ansicht von 6 Beiträgen - 1 bis 6 (von insgesamt 6)
  • Autor
    Beiträge
  • #6170
    Matthias Haake
    Teilnehmer

    Hallo Nuclos-Team.

    Ich versuche grade, einige Rules mit der neuen API umzusetzen und halte mich da immer nahe am Wiki.

    http://wiki.nuclos.de/display/Konfiguration/QueryProvider

    Poblem 1 Dort wird z. B. die Klasse „QueryProvider“ erwähnt. Die gibt es bei mit gar nicht (v3.9.4) – aber ich konnte eine Klasse „Query“ entdecken. Ist das Versionsunterschieden geschuldet?

    Problem 2: Die Entität „Arbeitsvertrag“ hat eine API-Regel. Dort möchte ich den Zeitraum des aktuellen Vertrages mit den Zeiträumen aller anderen Verträge des Mitarbeiters prüfen (dürfen sich ja nicht überschneiden, d.h. zu jedem Zeitpunkt sollte nur ein Vertrag gelten).

    Konkret möchte ich daher als erstes alle Arbeitsverträge laden, die zum selben Mitarbeiter gehören, wie der aktuelle Vertrag:


    Query query1 = QueryProvider.create(Contract.class);
    query1.where(Contract.Employee.EQUALS(currentContract.getEmployeeId()));

    Hier scheitert es, dass das „ForeignKeyAttribute“ vom Typ String ist und ich Fremdschlüssel aber über die ID holen muss. Wie macht man das (alle Datensätze mit gleichem Fremdschlüssel laden)?

    Vielen Dank für jeden Tipp.
    Matthias

    #6173
    Matthias Haake
    Teilnehmer

    Hab noch ein bisschen weiter probiert… der folgende Code sieht nicht mehr ganz so schön aus, wie im Wiki, lässt sich aber kompilieren:


    Query query1 = QueryProvider.create(Contract.class);
    query1.where(new SearchExpression(Contract.Employee, currentContract.getEmployeeId(), QueryOperation.EQUALS));
    List result = QueryProvider.execute(query1);

    Aber laut Logfile gibt es eine Exception:

    2013-01-11 11:31:04,741 ERROR [org.nuclos.server.nbo.BusinessObjectServerServiceProvider] – org.nuclet.businessentity.Contract.(org.nuclos.common.dal.vo.EntityObjectVO)
    java.lang.NoSuchMethodException: org.nuclet.businessentity.Contract.(org.nuclos.common.dal.vo.EntityObjectVO)

    Any ideas?

    #6174
    Matthias Haake
    Teilnehmer

    Auch das hier geht nicht…


    query1.where(Contract.Employee.eq(currentContract.Employee))

    Und das hier erzeugt eine NullPointerException:

    query1.where(new SearchExpression(Contract.Employee, currentContract.Employee, QueryOperation.EQUALS));

    Bin dankbar für jedes Beispiel 🙂

    #6176
    Matthias Reichart
    Teilnehmer

    zur Problem 1:
    Das Wiki und die API beinhalten bereits die Dokumentationen zur Version 3.10.

    zu Problem 2:
    Bei den Queries und der Verwendung von ForeignKeyAttributes handelt es sich tatsächlich um einen Fehler. Dieser wurde bereits eingestellt und von uns bearbeitet.
    Hintergrund: Da ein String nicht als ForeignKey fungiert und auch nicht kann, funktionieren folgende Aufrufe nicht:
    query1.where(Contract.Employee.eq(currentContract.Employee))


    new SearchExpression(Contract.Employee, currentContract.getEmployeeId(), QueryOperation.EQUALS))

    #6229
    Matthias Haake
    Teilnehmer

    Hallo.

    Ich habe mal die neueste Version installiert (3.10.0011 vom 15.01.13). Ist es hier schon möglich, Daten über den Fremdschlüssel zu laden?

    Im Wiki http://wiki.nuclos.de/pages/viewpage.action?pageId=820011 finde ich bei den Beispielen nichts passendes. Kann mir bitte jemand auf die Sprünge helfen?

    Vielen Dank und Grüße,
    Matthias

    #6355
    Matthias Reichart
    Teilnehmer

    Hallo,

    der Fehler mit den Fremdentitäten wurde bereits behoben und sollte in der aktuellen Version nicht mehr vorhanden sein. Die ForeignKeys werden als Elemente vom Typ „Long“ bereitgestellt.

    Viele Grüße,
    Matthias Reichart

Ansicht von 6 Beiträgen - 1 bis 6 (von insgesamt 6)