我正在尝试在一列上内连接两个表。 从数据库方面来看,没有映射,因为这是我不想讨论的内容。
我想使用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。
答案 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作为参考,它提供了所需的所有信息。