使用HQL进行内部联接

我试图在一列内连接两个表。 从DB方面来说,没有映射,因为它是我不想讨论的东西。

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

到目前为止这是我的hql

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

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

我也在下面尝试过

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

但我在exception中没有映射到ROLE。

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

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

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