【问题标题】:Hibernate Joins using HQL使用 HQL 进行休眠连接
【发布时间】:2012-11-14 07:47:15
【问题描述】:

我只需要 HQL 中的一个简单示例(无条件),其中我有两个表需要在“int”类型的列上使用左外连接进行连接。我在后端有 Sybase。

我查看了很多地方(甚至在这个网站上),包括 the documentation,但没有发现它们对初次使用的用户太有用。

假设我有表“First”和表“Second”,连接列“empID”为“int”。如何使用命名查询将外部联接 First 与 second 分开。 还请指定是否需要对第一类和第二类的 hbm 文件进行任何其他映射更改。我相信这将有助于为许多 Hibernate 新手简化连接。

编辑:

empID 是一个肯定存在于表 First 中的值,可能存在也可能不存在于表 Second 中。它只是指员工。

【问题讨论】:

  • 'First' 和 'Second' 之间是否存在关系,或者它们只是碰巧都引用了员工?

标签: hibernate join hql


【解决方案1】:

这是不可能的。仅当两个实体之间存在关联时才可能进行连接。

如果你有,你可以做你想做的事:

  • 从 First 到 Employee 的 ManyToOne 或 OneToOne 关联
  • 从 Employee 到 Second 的 OneToMany 或 OneToOne 关联

在这种情况下,查询看起来像

select first from First first
inner join fetch first.employee employee
left join fetch employee.second(s) second
where ...

【讨论】:

    【解决方案2】:
    select ... from First as f, Second as s where f.employee.Id = s.employee.Id
    

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 1970-01-01
      • 2012-02-19
      • 2013-03-08
      • 2023-04-05
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 2013-01-19
      相关资源
      最近更新 更多