2017-04-12 4 views
0

Ich möchte die SQLExpressions von QueryDsl verwenden. Ich habe ein Q-Objekt namens qMyClass. Jetzt möchte ich die Listagg-Funktion der Oracle-Datenbank verwenden. Daher möchte ich ein WithinGroup-Objekt initialisieren.Verwenden von SQLExpression von QueryDsl

WithinGroup<Object>.OrderBy withinGroup = SQLExpressions.listagg(qMyClass.attributeName, "/").withinGroup().orderBy(qMyClass.attributeName); 

Der erste Teil

SQLExpressions.listagg(qMyClass.attributeName, "/") 

gibt mir schon den Fehler:

unknown operation with operator LISTAGG and args [myClass.attributeName, /]

Wer weiß, wie listagg zu benutzen? Ich habe keine hilfreichen Informationen im Internet gefunden. Ich benutze Version 4.0.2 von QueryDsl. Vielen Dank!

Antwort

0

so etwas wie dieses Versuchen:

select(
    qMyClass.id, 
    SQLExpressions.listagg(qMyClass.attributeName,"/") 
     .withinGroup() 
     .orderBy(qMyClass.attributeName.asc()) 
     .getValue() 
     .as("foo")) 
    .from(qMyClass) 
    .groupBy(qMyClass.id); 
+0

Vielen Dank für Ihre Antwort, die orderBy keine OrderSpecifier nicht erwartet, so hatte ich die 'asc()' in Ihrer Antwort zu entfernen. Der 'getValue(). As (" foo ")' ist etwas, was ich nicht wusste. Ich habe meine Abfrage geändert und bekomme nun den Fehler 'Kein Muster gefunden für LISTAGG'. – Markus

+0

Welche Version verwenden Sie? – natros

+0

Ich verwende Version 4.0.2 – Markus

Verwandte Themen