如何在Hibernate查询语言中执行左连接? [英] How to perform left join in Hibernate Query Language?

查看:88
本文介绍了如何在Hibernate查询语言中执行左连接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



Hql查询:


$ b $这是我的HQL查询,但它不起作用并且发生错误。 b

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

并导致此错误:

  org.hibernate.QueryException:
此查询捕获异常。无法解析TABLEB:TABLEA的属性:

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

解决方案

仅在主实体中使用LEFT JOIN:

样本



EntityA具有EntityB类型的对象entityB所以你可以

  SELECT A FROM实体A LEFT JOIN A.entityB B WHERE ... 



b

  SELECT A FROM实体A LEFT JOIN实体B B WHERE B.entityA = A 

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


This is my HQL query, but it isn't working and is throwing an error.

Hql query:

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

and it causes this error:

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

How can I solve this problem? Actually I retrieved a value from more than one table. This query doesn't work with CreateQuery(strQuery).

解决方案

In HQL you can use LEFT JOIN only with linked property in main entity:

Sample

EntityA has an object entityB of type EntityB so you can

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

IF EntityA haven't entityB property but is EntityB have a property entityA, you can't write this:

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

because you have an error. This is an Hibernate issue not resolved yet.

这篇关于如何在Hibernate查询语言中执行左连接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆