Hibernate使用HQL加入

时间:2012-11-14 07:47:15

标签: hibernate join hql

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

我已经查看了很多地方(甚至在这个网站上)并且包括the documentation但是没有发现它们对初次使用者来说太有用了。

考虑我将表'First'和表'Second'与连接列'empID'作为'int'。如何使用命名查询将第二个外部联接保留为第一个。 还请指定是否需要对First和Second类的hbm文件进行任何其他映射更改。我相信它将有助于简化许多Hibernate新手的连接。

编辑:

empID是一个绝对存在于表First中的值,可能会也可能不会出现在表Second中。它只是指一名员工。

2 个答案:

答案 0 :(得分:1)

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

如果你有这样的话,你可以做你想做的事情:

  • 从First到Employee的ManyToOne或OneToOne关联
  • 从员工到第二个的OneToMany或OneToOne关联

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

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

答案 1 :(得分:0)

select ... from First as f, Second as s where f.employee.Id = s.employee.Id