我现在做权限和角色,他们是多对多的关系,现在我想查看一个角色下有多少权限。
权限: Permissions 角色:Role public List<Permissions> findPermissionsByRoleId(int roleId) {                                    
return  sessionFactory.getCurrentSession().createQuery("from Permissions per where per.roles.ro_id ="+ roleId).list();
 
}这个的不对!

解决方案 »

  1.   

    问题很明显,2个表的查询,你没有写内连接显然是不行的  public   List <Permissions>   findPermissionsByRoleId(int   roleId)   {                                                                         
    return   sessionFactory.getCurrentSession().createQuery( "from   Permissions   per    inner join per.roles   where   per.roles.ro_id   = "+   roleId).list(); 
      
    } 而且这样查询的 是ro_id=?的 一行的所有的记录,,返回List 的结果集里面存储的对象都是 Object[] 类型,记得要转型,,,如果直接Rerturn 肯定会报错,所以完整的答案是:public   List <Permissions>   findPermissionsByRoleId(int   roleId)   {                                                                         
    List<Object[]> ar=   sessionFactory.getCurrentSession().createQuery( "from   Permissions   per    inner join per.roles   where   per.roles.ro_id   = "+   roleId).list(); 
    List <Permissions>  list=new ArrayList<Permissions>();
    for(Object[] b:ar)
    {
    Permissions P=(Permissions)b[0];
    list.add(p};
      

    return list;}
      

  2.   

    应该查角色表吧
    public   List <Permissions>   findPermissionsByRoleId(int   roleId)   {                                                                         
    return   sessionFactory.getCurrentSession().createQuery( "from   Role r where   r.ro_id   = "+   roleId).getPermissionlist(); 
      
    } 而
    from   Permissions   per   where   per.roles.ro_id   = "+   roleId
    中per.roles其实不是单个对象,而是多个,所有不能直接.ro_id查询。
      

  3.   

    应该查角色表吧
    public List <Permissions> findPermissionsByRoleId(int roleId) {   
    return sessionFactory.getCurrentSession().createQuery( "select r.permissions from Role r where r.ro_id = "+ roleId).getPermissionlist();  
       
    }  
      

  4.   

    看来你真是个初学者,,  思路是那样的完全没有问题的,有些细节也是没法描述的,你是不是用了  Hibernate 自动映射功能,,自动产生的JAVA  BEAN的类,其中有一个  Permissions.java  类,里面有这么一条属性  private Role roles;   这里要把这个对象初始化下,, 应该写成,  private Role roles =new Role();  如果还不行的话,就自己检查下细节,如果还不行,,神都帮不了你了,,