使用HQL进行内部连接 [英] Inner join using HQL

查看:94
本文介绍了使用HQL进行内部连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在一列中内连接两个表。
在数据库方面,没有映射,因为它是我不想讨论的。



我想用INNER JOIN执行HQL查询并检索ROLE对象/结果。

这是我的hql到目前为止



session.createQuery(from ROLE as role INNER JOIN INVOLVEMENT as involvement ON role.id = involvement.roleid WHERE involvement.id = X)。list();



我发现ON在HQL上不可用。我如何明确地告诉Hibernate只在这一列上JOIN。



我也试过下面的一个



从ROLE中选择roleSpec作为角色,INVOLVEMENT作为参与WHERE role.ID = involvement.role_id and involvement.id = 27251352


但是我得到的ROLE没有映射到异常中。

解决方案

<请检查你的ROLE确实是一个映射实体。
此外,你不需要执行ON - hibernate知道什么是连接列(我知道如何在JPA中定义这个) - 所以不需要在语句中提供它。
它应该是 -

  session.createQuery(from role as role INNER JOIN Involved in involvement WHERE involvement.id = X)。list(); 

我假设您将Role类映射到ROLE表,并将Involvement类映射到Involement表。
也许你错误地使用了表名,这就是为什么你会得到未映射的错误。
我上次编写HQL(而不是JPA-QL),我使用了下面的链接作为参考,它提供了所有需要的信息。


I am trying to inner join two tables on one column. From DB side, there's no mapping as it's something I don't want to discuss.

I want to execute HQL query using INNER JOIN and retrieve ROLE objects/results.

Here's my hql so far

session.createQuery("from ROLE as role INNER JOIN INVOLVEMENT as involvement ON role.id = involvement.roleid WHERE involvement.id = X").list();

I see ON is not available on HQL. how do i explicitly tell Hibernate to JOIN on this column only.

I tried below one too

select roleSpec from ROLE as role, INVOLVEMENT as involvement WHERE role.ID = involvement.role_id and involvement.id =27251352

But I am getting ROLE not mapped in exception.

解决方案

Please check that your ROLE is indeed a mapped entity. In addition, you don't need to perform "ON" - hibernate knows what is the join column (I know how to define this at JPA ) - so no need to provide it at the statement. It should be -

session.createQuery("from Role as role INNER JOIN Involvement as involvement WHERE involvement.id = X").list();

I assume you have Role class mapped to ROLE table, and Involvement class mapped to Involement table.
Maybe you used table names by mistake, and this is why you get the "not mapped" error.
Last time I wrote HQL (and not JPA-QL) I used the following link as reference, it provides all the info needed.

这篇关于使用HQL进行内部连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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