Hibernate левое соединение между независимыми таблицами - org.hibernate.hql.ast.QuerySyntaxException Путь, ожидаемый для объединения - PullRequest
1 голос
/ 09 января 2012

У меня есть несколько таблиц, перечисленных в persistence.xml как:

<persistence-unit name="myEntityManager" transaction-type="RESOURCE_LOCAL">  
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
   <class>com.myPackage.someTable</class>
   <class>com.myPackage.tableOne</class>
   <class>com.myPackage.tableTwo</class>
   <class>com.myPackage.tableThree</class>
   <class>com.myPackage.tableThreePK</class>
   <class>com.myPackage.tableFour</class>
</persistence-unit>

Таким образом, классы независимы друг от друга.Между ними не определено никаких отношений.

У меня есть SQL-запрос, как показано ниже:

select s.* from someTable s 
join tableOne O on s.col1 = O.col1 
join tableTwo T on s.col2 = T.col2 
join tableThree Th on s.col3 = Th.col3 and s.col4 = Th.col4 
left join tableFour f on s.col6 = F.col6 
where s.col5 = 'abc'

Как написать этот запрос в спящем режиме для вышеуказанного сценария:

select s.* from someTable s 
join tableOne O  
join tableTwo T  
join tableThree Th 
left join tableFour f 
where s.col5 = :col5 
and s.col1 = O.col1 
and s.col2 = T.col2 
and s.col3 = Th.pk.col3 and s.col4 = Th.col4 
and s.col6 = F.col6 

myQuery.setParameter("col5", "abc");

Выше запрос не работает идает

org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!

В чем проблема?Чего мне не хватает?

Спасибо за чтение!

1 Ответ

3 голосов
/ 09 января 2012

HQL не поддерживает левые объединения без связей между сущностями. Вы должны будете использовать SQL-запрос для этого.

Примечание: select s.* не является допустимым HQL. select s есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...