三个table
1. User
 
2. Role
 
3. User_Role
 
Role对象里面有个many-to-many的关系 Set <User>
 
需求:查询所有 传进来一个 user 然后查出 与他关联的 List<Role>
hibernate hql 查询如何实现? 

解决方案 »

  1.   

    select a from User_Role a left join a.User b where b.user_id=userId
      

  2.   

    SQL  我也会写   我想知道的 是 有没有  HQL  方便点的 
      

  3.   

    你看清了这是Sql?sql有这样写的select a
      

  4.   

    select * from Role where (from User where id=" + value + ") in elements(users)
      

  5.   

    getHibernateTemplate().get(User.class,user.getId()).getRoles();
    //User是User表对应的类名,getRoles()是user里面对应的得到那个set的方法,返回是一个Set
      

  6.   


    实际的表格  是这样的 
    @ManyToMany
        @JoinTable (name = "CP_PERSON_ROLE_MAPPING", inverseJoinColumns = @JoinColumn (name = "RoleID"), joinColumns = @JoinColumn (name = "PersonID"))
        public Set <Role> getRoles ()然后 我按照你的 写 
    select pr from CP_PERSON_ROLE_MAPPING pr left join pr.Person p where p.ID="+person.getId ()报错CP_PERSON_ROLE_MAPPING中间表 我没有对象的 
    HibernateQueryException: CP_PERSON_ROLE_MAPPING is not mapped [select pr from CP_PERSON_ROLE_MAPPING pr left join pr.Person p where p.ID=1]; 
      

  7.   

    1:去掉延迟加载,直接查user就是了,然后getRoles
    2:String hql = "from User u left outer join fetch Role where u.id = "+user.getId();
    好久不打hql了,大概意思是这样的
      

  8.   

    fetch是抓取的意思,就是查user的时候,把相关roles查出来,并依赖给user