2017-02-13 10 views
0

Я хочу сделать внутреннее соединение в моем запросе HQL, но я получил эту ошибку:HQL: внутреннее соединение

вызвано следующими причинами: org.hibernate.hql.internal.ast.QuerySyntaxException: неожиданный маркер: (...

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 
      ... 

запрос работает в SQLDeveloper

ответ

0

Просто проверяю запрос, который вы выложили, я думаю, вы должны закрыть скобку new myDto после col2, потому что в этом запросе вы выложили не закрыт:

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

На самом деле, Кажется, что HQL не поддерживает 'inner join' с' select': /. Я отправлю свое обходное решение. Спасибо вам – user2203384

0

Hibernate, кажется, не поддерживает inner join с последующим select Inner join with select on HQL мне удалось заставить его работать:

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)