如何在Hibernate查询语言中执行左连接?

时间:2013-08-31 06:45:28

标签: oracle hibernate hql

这是我的HQL查询,但它无法正常工作并抛出错误。

Hql查询:

SELECT 
    *
FROM 
    TABLEA A 
LEFT JOIN 
    A.TABLEB B 
WHERE 
    A.COLUMNNAME = B.COLUMNAME

并导致此错误:

org.hibernate.QueryException:
This Query caught Exception. could not resolve property: of TABLEB:TABLEA.

我该如何解决这个问题?实际上我从多个表中检索了一个值。此查询不适用于CreateQuery(strQuery)

1 个答案:

答案 0 :(得分:12)

HQL中,您只能将LEFT JOIN用于主要实体中的链接属性:

示例

EntityA有一个EntityB类型的对象entityB,所以你可以

SELECT A FROM EntityA A LEFT JOIN A.entityB B WHERE ...

如果EntityA没有entityB属性但是EntityB有一个属性entityA,你就不能这样写:

SELECT A FROM EntityA LEFT JOIN EntityB B WHERE B.entityA = A 

因为你有错误。这是一个尚未解决的Hibernate问题。