JPQL- Query über mehrere Tabellen

dschuebel

Mitglied
Hallo zusammen, ich bin noch absoluter Anfänger im Bereich JavaEE und komme bei der Query über mehrere Tabellen per JPQL einfach nicht weiter.
Ich habe 2 Tabellen:
Bewerbung: ben_id|arbeit_id|zulassung
Benutzer: id|name|punkte|schnitt
Nun würde ich gerne eine Liste nach arbeit_id erzeugen, bei der die Benutzerdaten ausgegeben werden und diese nach Punkte und Schnitt sortiert werden.

Mein Versuch war:
Code:
@NamedQuery(name="Liste", query="SELECT a FROM Bewerbung b JOIN b.benutzer a WHERE b.arbeit = :id AND b.zulassung = false ORDER BY a.punkte DESC, a.schnitt")
Leider funktioniert das so nicht, allerdings habe ich das joinen per JPQL auch noch nicht so richtig verstanden 🙁
 
Ich habe eine SQL-Abfrage in der Konsole getestet, dass hat einwandfrei funktioniert. Dann habe ich die Query entsprechend umgeschrieben in JPQL.
 
[das] funktioniert (..) so nicht
ist keine Fehlerbeschreibung, mit der wir was anfangen können. Beschreibe das Verhalten, was du erwartest und was stattdessen passiert. Sofern eine Exception geworfen wird, poste den gesamten (!) Stacktrace.
Außerdem brauchen wir das Mapping, welches du definiert hast, sowie den Code, in welchem den Query absetzt.
Zudem wäre es sinnvoll zu erwähnen, nach welcher Version der JPA Spec. du arbeitest und gegebenenfalls, welche Implementierung du verwendest.
Dein Query selbst sieht jedenfalls syntaktisch erst mal in Ordnung aus. Genau kann man das aber erst sagen, wenn man das Mapping dazu sieht.
 
Lasse mir immer per System.out.println... die SQL Anweisung ausgeben, dann sieht man schnell wo der Fehler ist. Oder man kopiert diess und probiert sie in mySQL direkt, dann bekommt man die Fehler von mySQL angezeigt, sind hilfreicher, als eine Exception.
 
Lasse mir immer per System.out.println... die SQL Anweisung ausgeben, dann sieht man schnell wo der Fehler ist. Oder man kopiert diess und probiert sie in mySQL direkt, dann bekommt man die Fehler von mySQL angezeigt, sind hilfreicher, als eine Exception.

Es gibt nirgends einen Hinweis darauf, dass er MySQL verwendet.
Logging mit Sysout ist grundsätzlich eine doofe Idee. Die großen JPA Implementierungen haben auch alle ein gescheites Logging eingebaut, über das man sich bei Bedarf auch alle abgesetzten SQL statements ausgeben lassen kann.
Und zu den Exceptions: Hängt wohl auch vom Programmierer ab, ob dieser in der Lage ist Exceptions richtig zu lesen und zu interpretieren. Pauschal zu sagen, dass die Fehlermeldungen vom DBMS hilfreicher seien, ist, naja, nicht sehr weit gedacht. Zum einen werden die Fehlermeldungen vom DBMS gewrappt und zum anderen kommt es möglicherwise gar nicht erst dazu, dass dort ein Fehler geschmissen wird, weil das Problem auch früher oder später angesiedelt sein kann.
 
Es gibt nirgends einen Hinweis darauf, dass er MySQL verwendet.
Logging mit Sysout ist grundsätzlich eine doofe Idee. Die großen JPA Implementierungen haben auch alle ein gescheites Logging eingebaut, über das man sich bei Bedarf auch alle abgesetzten SQL statements ausgeben lassen kann.
Und zu den Exceptions: Hängt wohl auch vom Programmierer ab, ob dieser in der Lage ist Exceptions richtig zu lesen und zu interpretieren. Pauschal zu sagen, dass die Fehlermeldungen vom DBMS hilfreicher seien, ist, naja, nicht sehr weit gedacht. Zum einen werden die Fehlermeldungen vom DBMS gewrappt und zum anderen kommt es möglicherwise gar nicht erst dazu, dass dort ein Fehler geschmissen wird, weil das Problem auch früher oder später angesiedelt sein kann.

Mal ganz davon abgesehen, dass das bei preparedStatements nicht funktioniert.

Gruß

Claus
 

Zurück
Oben