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