日期:2014-05-16  浏览次数:21570 次

hibernate hql 嵌套查询(中间表查询)

我们在用hibernate时,会在对应的实体加上对应一对多,多对多,多对一关系。而在查询的时候,我们会用到嵌套去查询。

? 但是,在这里有一点声明,在用hql查询的时候, 网上很多人都说 hibernate 不支持 from 子查询。这点我没有去验证,大家可以注意以下。

?

?

?

多对多,有相关中间表

???????? 一开始我本打算用SQL,但是直接用SQL去查询,就无法直接获取两个表中的关联数据!就算能获取,相对来说还是比较复杂.

?????? 假设,我现在关联关系 一个是UserEntity(用户),一个是DepartmentEntity(部门) 它们直接是多对多关系!

因为采取的是hibernate的注解 @JoinTable 。所以中间实体(Entity)就没有去建立。

?? 当时,我就在纠结怎么获取当中的数据。解决办法如下:

SELECT  dep_tab FROM DepartmentEntity dep_tab
               left join dep_tab.userEntity user_tab 
              where user_tab.userId = 1

? 上面信息是通过UserID查询出该用户 所任职的岗位。 记得是DepartmentEntity 实体“.” 出用户实体。当然也可以通过用户实体“.”出。因为本身是对对关系,就看你查询所用到的条件了。

???在上述查询的时候,切记不能写为 select * ,否则会报如下异常:

?

unexpected token: * near line 1, 

?

?

?

?