hql 经过中间表查询,请问语句怎么写

以上是示意图,我想查询role_name为员工的User集合的话,请问怎么写hql,求助!!!... 以上是示意图,我想查询role_name为员工的User集合的话,请问怎么写hql,求助!!! 展开
 我来答
百度网友4dadcb3
2014-01-24
知道答主
回答量:23
采纳率:0%
帮助的人:7万
展开全部
SQL:

select u.* from User_Role ur,User u,Role r where ur.user.id = u.user_id and ur.role_id = r.role_id and role_name = 'role_name';
HQL:
select u.* from User_Role ur, Role r , User u where ur.role.role_code = r.role_code and ur.user.user_id = u.user_id and ur.role.role_name = 'xxxxxx';
追问
谢谢,不过报错了。
org.hibernate.QueryException: could not resolve property: role of: com.pb.entity.User_Role [该语句]
是不是配置的问题??
不过,左外连接就能实现。哎
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琳米爱琳琳
2014-01-27 · TA获得超过729个赞
知道答主
回答量:120
采纳率:0%
帮助的人:85.6万
展开全部
from User_Role u where u.user.name like '%name%';
查出为User_Role对象,get一次就行了吧
不行的话可以追问。
追问
谢谢。
这个方法我用过,会报错
org.hibernate.QueryException: could not resolve property: user of: com.pb.entity.User_Role [from com.pb.entity.User_Role u where u.user.name = 'admin']

我直接用左外连接搜的,可以实现该功能。

不知道有没有别的法子。
追答
抱歉,,,,我看错了   。。。你User_Role里面还有个User_Role_Id对象啊。。。
那你就from User_Role_Id u where u.user.name like '%name%'这样 就是User_Role_Id对象了,,,就可以get了。。。
还有 如果不嫌麻烦得话 应该可以直接查出User对象
from User u where u.id in (select u_r.user.id from User_Role_Id u_r where u_r.user.name like '%XX%') hql这中查法会进行多次查询,所以中间表还是建议用sql。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式