Hibernate在独立表之间保持连接 - org.hibernate.hql.ast.QuerySyntaxException连接期望的路径

时间:2012-01-09 04:37:50

标签: java sql hibernate

我在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'

如何在hibernate中为上述场景编写此查询:

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 个答案:

答案 0 :(得分:3)

HQL不支持没有实体之间关联的左连接。您将不得不使用SQL查询来执行此操作。

旁注:select s.*无效的HQL。 select s是。

相关问题