Вложенный оператор выбора с HQL

Я хочу объединить таблицу Project с таблицей ProjectPage на основе разных идентификаторов из двух таблиц ProjectPage, я использую HQL и пробовал следующее:

EntityManager em = entityManager();
TypedQuery<Project> q = em.createQuery("SELECT o FROM Project AS o inner join
      (SELECT DISTINCT  pp.id  from ProjectPage) pp" +
      "on o.id=pp.id WHERE LOWER(o.name) LIKE LOWER(:name) "+
      "and ( o.status is null or o.status != :status_val)", Project.class);

я получил следующую ошибку:

ERROR org.hibernate.hql.internal.ast.ErrorCounter : unexpected token: (

в чем проблема в моем запросе?


person Java Player    schedule 13.01.2015    source источник
comment
Попробуйте: "SELECT o FROM Project AS o inner join (SELECT DISTINCT pp.id from ProjectPage pp) ppid " + "on o.id=ppid WHERE LOWER(o.name) LIKE LOWER(:name) "+ "and ( o.status is null or o.status != :status_val) Вы пропустили псевдоним для ProjectPage во внутреннем соединении.   -  person rion18    schedule 13.01.2015


Ответы (1)


Возможно, псевдоним таблицы в операторе select?

SELECT o FROM Project AS o

Вы имеете в виду

SELECT o.* FROM Projects AS o
person Lefka    schedule 13.01.2015