from t_menu where t_menu_id = (select t_menu_id from t_role_menu where t_role_id = (select t_role_id from t_role where t_user_id = userId)))
(select t_role_id from t_role where t_user_id = userId)))(select t_menu_id from t_role_menu where t_role_id = from t_menu where t_menu_id = 共3个查询,你也可以整合成2个 一个接一个这样查出来来解决
我想用一个HQL语句查出来
select u from User u where u.id = user_id and exists (select 1 from UserRole r where r.userId = u.id and exists (select 1 from RoleMenu m where m.roleId = r.roleId))
只要你配置了也能查出来的,你既然不想这样,那这样 select m from RoleMenu m where m.roleId = r.roleId and exists (select 1 from UserRole r where m.roleId = r.roleId and exists (select 1 from User u where u.id = user_id and r.userId = u.id)) 这样OK了吗???
另外我写的就是HQL,你改相应的地方就可以了 这样写是没有配置级联的 如果你配置级联了,直接select u from User where u.id = id 就能直接取出你要的数据
共3个查询,你也可以整合成2个
一个接一个这样查出来来解决
我想用一个HQL语句查出来
这句话的侧重点不同,我要的结果是出来Menu里面的信息,还有就是我说的是用HQL语句,sql语句我已查出来了
select m from RoleMenu m where m.roleId = r.roleId and exists (select 1 from UserRole r where m.roleId = r.roleId and exists (select 1 from User u where u.id = user_id and r.userId = u.id))
这样OK了吗???
这样写是没有配置级联的
如果你配置级联了,直接select u from User where u.id = id
就能直接取出你要的数据
是这样的,UserRole跟RoleMenu是中间表,hibernate 自动帮我生成的pojo类,里面就只有一个字段,就ID,
比如:RoleMenu,表里面是引用roleid(role表的主键)跟menuid(menu表的主键),你怎么样用HQL语句得到呢
要不你关系里不用ID用<many-to-one>这样不也行吗