hql 经过中间表查询,请问语句怎么写
以上是示意图,我想查询role_name为员工的User集合的话,请问怎么写hql,求助!!!...
以上是示意图,我想查询role_name为员工的User集合的话,请问怎么写hql,求助!!!
展开
2个回答
展开全部
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';
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 [该语句]
是不是配置的问题??
不过,左外连接就能实现。哎
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
from User_Role u where u.user.name like '%name%';
查出为User_Role对象,get一次就行了吧
不行的话可以追问。
查出为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。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询