2017-03-15 3 views
1

Ich habe 2 Tabellen und ich versuche, Join ohne Zuordnung zwischen den Klassen (StData und ApFlow) zu verwenden. Ich habe eine Abfrage wie folgt und ich bekomme das gewünschte Ergebnis in der Datenbank. Ist es möglich, ohne Zuordnung, wenn ja, wie zu tun. Bitte jemand mir helfen. Mit dieser Abfrage bekomme ich QueryException: Unable to resolve path [ApFlow.ApNumber].HIbernate Outer Join ohne Zuordnung

session.createQuery("FROM StData " 
       + "LEFT OUTER JOIN ApFlow " 
       + "ON StData.Apart = ApFlow.Apart and StData.StTitle = ApFlow .StTitle " 
       + "WHERE ApFlow.ApNumber= :ApNumber and ApFlow.Apart= :Apart") 

     .setParameter("ApNumber",ApNumber) 
     .setParameter("Apart", Apart) 
     .list(); 

Antwort

1

Sie können es mit Hibernate tun 5.1+: Join unrelated entities in JPA

Und wahrscheinlich, müssen Sie Aliase

Diese Abfrage simuliert werden kann hinzufügen, um ein Kreuzprodukt verwenden. Bedenken Sie jedoch, dass dies nicht der Fall ist left join (Ursache von null Werte). Dies ist eher wie ein inner join.

"FROM StData st, ApFlow flow" 
    + "WHERE st.Apart = flow.Apart and st.StTitle = flow.StTitle " 
    + "and flow.ApNumber= :ApNumber and flow.Apart= :Apart" 
+0

In Hibernate 4 müssen Zuordnung verwenden? Gibt es noch eine andere Wahl? – user7620991

+0

@ user7620991 Ja, die Zuordnung für einen Join in Hibernate 4 ist zwingend erforderlich. Wahrscheinlich können Sie Ihre Abfrage mit inner select neu schreiben. –

+0

Ok danke. Ich werde deine Antwort akzeptieren. Ich bin neu in SQL/Hibernate können Sie es bitte zeigen. Wäre sehr hilfreich. – user7620991