2017-02-13 5 views
0

Ich mag eine innere Verknüpfung in meiner hql Abfrage zu tun, aber ich habe diesen Fehler habe:HQL: INNER JOIN

Verursacht durch: org.hibernate.hql.internal.ast.QuerySyntaxException: unerwartetes Token: (...

SELECT new myDto(
       col1, col2 
      FROM table1,table2 
      INNER JOIN (
       SELECT foo, bar, ... max(nb) as numberBar 
       FROM table1 
       GROUP BY foo, bar ... 
      ) myAlias 

      ON table1.foo = myAlias.foo 
      AND table1.bar = myAlias.bar 
      ... 

die Abfrage in sqldeveloper arbeitet

Antwort

0

Just checking die Abfrage, die Sie geschrieben haben, ich glaube, Sie haben die Klammer von new myDto nachschließen, weil in dieser Abfrage Sie gebucht haben nicht geschlossen:

SELECT new myDto(
       col1, col2) 
      FROM table1,table2 
      INNER JOIN (
       SELECT foo, bar, ... max(nb) as numberBar 
       FROM table1 
       GROUP BY foo, bar ... 
      ) myAlias 

      ON table1.foo = myAlias.foo 
      AND table1.bar = myAlias.bar 
      ... 
+0

Eigentlich HQL scheint "inner join" mit 'select':/nicht zu unterstützen. Ich poste meine Problemumgehung. Danke – user2203384

0

Hibernate nicht inner join von select Inner join with select on HQL schaffe ich mit gefolgt zu unterstützen scheint, damit es funktioniert:

SELECT new myDto(
    //usual colums selection here 
    from table1, table2 
where ... 
AND .... 

// solution here without inner join 
AND ( table1.foo, table1.bar, nb) 
IN (select foo, bar, max(nb) as number 
    from table1  
    group by foo, bar)