| 

.NET C# Java Javascript Exception

HQL raw Query

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


HQL raw Query

Proseminar - 10.07.2010 19:21
Hallo,
Ich habe ein kleines Problem mit meinen Datenbank Abfragen.
Ich bin jetzt im Controller X und will mir dort eine Liste ausgeben lassen, die Aus alles meinen Tabellen eine macht über die Foreign-Keys. Die Sache ist, mit den Criteria projections kann ich oder schaffe ich es nicht die komplexe Datenbankabfrage selbst zu generieren.
Ich weiss es wäre leichter mit Quellcode, nur steht da was noch nichts drinnen außer der automatisch generierter Code.
Ich muss sozusagen eine DISTINCT , ODER BY, Datenbank abfrage machen, die nicht nur in aus meiner Tabelle X Daten zieht sondern, die Tabellen a,b,c auch mit einbezieht. Fremdschlüssel sind soweit gesetzt!
Die Tabelle X besitzt nur einen eigenen wert und zwar eine ID die als PK dient. Alles andere was in Tabelle X steht sind FK's aus a,b,c

Klartext ist: ich habe einen Sportler, Sportart und Altersklasse die bestimmte Attribute haben.
Jetzt will ich mir eine Bestenliste ausgeben lassen, die in einer Altersklasse und einer bestimmten Sportart definiert wird.
Da ein Sportler ja mehrere Ergebnisse hat und daher mehrmals in der Liste auftauchen kann ist es Blöd. Ich will hier nach meinen Sportler.id 's gruppieren und nach dem MAX(WERT) Distincten.
Ich habe mich jetzt durch sämtliche Seiten gequält und bekomm dauernd nur EXCEPTIONS , die so lang sind wie n Stephan King Roman.

Des weiteren lasse ich mir die Sportart und die Altersklasse in Drop Downs auswählen und will mir diese dann in den HQL query übergeben lassen. also ak.id und sa.id


Mache ich das über: executeQuery
.findall

Ich bin langsam echt mit meinem Latein am Ende und wäre über jede Hilfe, auch wenn sie noch so klein ist Dankbar!


Re: HQL raw Query

koeberle - 12.07.2010 11:58
Ich würde es so machen:
def c = Sportler.createCriteria()
def sportlerList = c.list{
  projections {
    distinct "id"
  }
  and{
    altersklasse{idEq(params.long('ak.id'))}
    ergebnis{sportart{idEq(params.long('sp.id'))}}
  }
}
Dann hast du erst mal die Liste mit allen Sportlern zu der Altersklasse und der Sportrat.
Jetzt musst du nur noch sortieren.
sportlerList = sportlerList.sort{it.bestValue(params.long('sp.id')) }
Dafür brauchst du noch die Methode bestValue in der Domainklasse Sportler:
def bestValue(sportArtId){
def c = Ergebnis.createCriteria()
return c.get{
  projections {
    max "wert"
  }
  and{
    eq('sportler', this)
    sportart{idEq(sportArtId)}
  }
}
}

Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "HQL raw Query" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.