一尘不染

使用HQL进行内部联接

hibernate

我试图在一个列上内部联接两个表。从数据库方面来看,没有映射,因为这是我不想讨论的。

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

到目前为止,这是我的总部

session.createQuery(“ ROLE作为角色,INNER JOIN INVOLVEMENT作为参与角色,id。X
=参与.roleid WHERE参与.id = X”)。list();

我看到HQL上没有ON。我如何明确告诉Hibernate仅在此列上加入。

我也尝试过一个

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

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


阅读 251

收藏
2020-06-20

共1个答案

一尘不染

请检查您的角色确实是一个映射实体。另外,您不需要执行“ ON”-hibernate知道什么是连接列(我知道如何在JPA上定义它)-因此无需在语句中提供它。它应该是 -

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

我假设您有Role类映射到ROLE表,Involvement类映射到Involement表。
也许您错误地使用了表名,这就是为什么会出现“未映射”错误的原因。
上一次我写HQL(而不是JPA-
QL)时,我使用以下链接作为参考,它提供了所需的所有信息。

2020-06-20