使用HQL进行内部联接

时间:2012-11-16 07:20:47

标签: java sql hibernate hql

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

我想使用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 and involvement.id = 27251352

  

但是我没有在异常中映射ROLE。

1 个答案:

答案 0 :(得分:16)

请检查您的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)时,我使用以下link作为参考,它提供了所需的所有信息。