Innerer Join mit HQL

8

Ich versuche, zwei Tabellen in einer Spalte zu verbinden. Von DB-Seite gibt es keine Zuordnung, da es etwas ist, worüber ich nicht sprechen möchte.

Ich möchte HQL-Abfrage mit INNER JOIN ausführen und ROLE-Objekte / Ergebnisse abrufen.

Hier ist mein hql soweit

  
    

session.createQuery ("von ROLE als Rolle INNER JOIN INVOLVEMENT als involvement on role.id = involvement.roleid WHERE involvement.id = X"). list ();

  

Ich sehe, dass ON in HQL nicht verfügbar ist. Wie sage ich Hibernate explizit, dass ich nur an dieser Spalte teilnehmen soll.

Ich habe es auch unter einem versucht

  
    

Wählen Sie roleSpec von ROLE als Rolle, INVOLVEMENT als Beteiligung WHERE role.ID = involvement.role_id und involvement.id = 27251352

  

Aber ich bekomme ROLE nicht in der Ausnahme zugeordnet.

    
Reddy 16.11.2012, 07:20
quelle

1 Antwort

14

Bitte überprüfen Sie, ob Ihre ROLE tatsächlich eine zugeordnete Entität ist. Außerdem müssen Sie nicht "ON" ausführen - Hibernate weiß, was die Join-Spalte ist (ich weiß, wie Sie dies bei JPA definieren) - Sie müssen es also nicht in der Anweisung angeben. Es sollte -

sein %Vor%

Ich nehme an, dass Sie der Rolletabelle die Rolle-Klasse zugeordnet haben und die Involvement-Klasse der Tabelle "Tabelle" zugeordnet ist.
 Vielleicht haben Sie versehentlich Tabellennamen verwendet, und deshalb erhalten Sie den Fehler "nicht zugeordnet".
Als ich letztes Mal HQL (und nicht JPA-QL) geschrieben habe, habe ich den folgenden Link als Referenz liefert es alle benötigten Informationen.

    
Yair Zaslavsky 16.11.2012, 07:54
quelle

Tags und Links