当前位置: 首页 > 面试题库 >

使用HQL进行内部联接

孔山
2023-03-14
问题内容

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

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

到目前为止,这是我的总部

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

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

我也尝试过一个

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

但是我得到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)时,我使用以下链接作为参考,它提供了所需的所有信息。



 类似资料:
  • 我试图在一列内连接两个表。从数据库方面来看,没有映射,因为这是我不想讨论的事情。 我想使用内部联接执行HQL查询并检索角色对象/结果。 这是到目前为止我的hql 一场createQuery(“从角色作为角色内部加入参与作为角色上的参与。id=invention.roleid,其中invention.id=X”)。list(); 我看到在HQL上不可用。如何明确地告诉Hibernate仅加入此列。

  • 如何在Hibernate中编写此SQL查询?我想使用Hibernate创建查询,而不是创建数据库。 我在SQLServer2008中创建了实体类, 我尝试用多种方法构建工作选择查询,但仍然不起作用。 也许实体有问题?

  • 问题内容: 如何在Hibernate中编写此SQL查询?我想使用Hibernate创建查询,而不是创建数据库。 我在SQLServer2008中创建了实体类, 我试图以多种方式构建有效的选择查询,但仍然无法正常工作。 实体有问题吗? 问题答案: 连接只能在实体之间存在关联时使用。您的Employee实体不应将名称为,类型为的字段映射到列。它应该与Team实体具有ManyToOne关联,并映射为Jo

  • 问题内容: 我想用HQL做这样的事情: 但这给出了一个错误: 有什么办法可以使用HQL和Hibernate做到这一点? 问题答案: 尝试使用 本机SQL 解决方案方法: 需要首先导入以下内容: 然后在代码中的某处: 有关此链接的更多信息,请点击 此处(加入Hibernate查询语言)

  • 如何在临时文件中获取名称以便在此查询中设置? 谢谢。

  • 问题内容: 我想在我的域/实体对象中执行以下操作: 这样我就可以在服务层中执行以下操作: 但是,我在HQL中的语法不正确-大约十分钟后,我决定放弃正式文档并在此处询问…?我的usercat表是这样加入的: 的SQL是这样,它在我的数据库命令提示符下工作正常: 仅仅是我还是休眠文档比较痛苦,您是否发现自己经常想知道,编写普通的jdbc准备好的语句来填充pojos / domain objects /