`
shendixiong
  • 浏览: 394230 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多

我们在用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, 

 

 

 

 

1
2
分享到:
评论
2 楼 shendixiong 2015-02-04  
fushun 写道
非常感谢,看另外的写的是inner,结果老报错,换成left就ok了

相互学习!
1 楼 fushun 2015-01-22  
非常感谢,看另外的写的是inner,结果老报错,换成left就ok了

相关推荐

Global site tag (gtag.js) - Google Analytics