Java 使用HQL的内部联接

Java 使用HQL的内部联接,java,sql,hibernate,hql,Java,Sql,Hibernate,Hql,我正在尝试在一列上内部联接两个表。 从DB方面来说,没有映射,因为这是我不想讨论的 我想使用内部联接执行HQL查询并检索角色对象/结果 这是到目前为止我的hql session.createQuery(“从角色作为角色内部加入参与作为角色参与到ROLE.id=invention.roleid,其中invention.id=X”).list() 我看到在HQL上不可用。如何明确地告诉Hibernate仅加入此列 我也试过了 从ROLE as ROLE、invention as invention中

我正在尝试在一列上内部联接两个表。 从DB方面来说,没有映射,因为这是我不想讨论的

我想使用内部联接执行HQL查询并检索角色对象/结果

这是到目前为止我的hql

session.createQuery(“从角色作为角色内部加入参与作为角色参与到ROLE.id=invention.roleid,其中invention.id=X”).list()

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

我也试过了

从ROLE as ROLE、invention as invention中选择rolespe,其中ROLE.ID=invention.ROLE_ID和invention.ID=27251352


但我得到的角色在异常中未映射。

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

session.createQuery("from Role as role INNER JOIN Involvement as involvement WHERE involvement.id = X").list();
我假设您将角色类映射到角色表,将参与类映射到Involment表
可能是您错误地使用了表名,这就是为什么会出现“未映射”错误

上次我编写HQL(而不是JPA-QL)时,我使用了以下内容作为参考,它提供了所需的所有信息。

改用SQL。HQL通常只有在具有适当的关系和实体映射时才起作用。(您仍然可以执行Theta样式的联接,但我不建议这样做)您能告诉我如何使用Hibernate执行SQL吗。应用程序的其余部分广泛使用Hibernate