10

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

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

到目前为止,这是我的 hql

session.createQuery("从 ROLE 作为角色 INNER JOIN INVOLVEMENT 作为参与 ON role.id = admission.roleid WHERE admission.id = X").list();

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

我也试过下面一个

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

但我得到的角色没有映射到异常中。

4

1 回答 1

17

请检查您的 ROLE 是否确实是一个映射实体。此外,您不需要执行“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)时,我使用以下链接作为参考,它提供了所需的所有信息。

于 2012-11-16T07:54:24.253 回答