zoukankan      html  css  js  c++  java
  • 数据库中多对多关系的处理 User---Role

    --一个用户可以担任多个角色,如user1既是调度员又是分拣员
    --一个角色可以被多个用户担任,如user1是调度员,user2也是调度员
    --用户和角色之间的对应关系为多对多,所以会产生中间表 t_user_role
    --所以查询用户对应的角色列表就需要通过中间表作为两张表的连接完成查询,以下分别给出sql查询方式和hql查询方式

    --sql查询方式,需要查询三张表,角色表---用户_角色表---用户表
    select u.c_id 用户编号,
    u.c_username 用户名,
    r.c_id 角色编号,
    r.c_name 角色名,
    r.c_description 角色描述
    from t_role r
    inner join t_user_role ur on r.c_id = ur.c_role_id
    inner join t_user u on u.c_id = ur.c_user_id
    where u.c_id = 382


    --hql查询方式,直接根据实体类之间的关系查询(fetch表示迫切连接,返回的集合是List<Role>,不加fetch返回的是List<Object[]>)
    --因为role实体类中是有user的一个set集合Set<User> users,所以返回List<Role>也可以通过每个role获取到里面的user对象
    --当然List<Object[]> 中有也保存了完整的信息,object[0]是role对象,object[1]是user对象
    from Role r inner join fetch r.users u where u.id=?

    --加fetch返回的数据

    --不加fetch返回的数据

  • 相关阅读:
    [poj解题]1017
    [算法] aov图拓扑算法
    【supervisord】部署单进程服务的利器
    【python】一个备份把文件备份到邮箱的python实现
    【GO】关于GO的浅显总结
    iOS开发快捷键
    iOS开发笔记
    VS2012智能提示无效解决方案
    国内几个WindowPhone广告平台
    纪念自己的第四个App:秘密Secret
  • 原文地址:https://www.cnblogs.com/gongchengshixiaobai/p/8019138.html
Copyright © 2011-2022 走看看