ycyu08
ycyu08
2009-07-24 21:46
浏览 238
已采纳

基于SSH的权限问题HQL语句查询

当前做了一个外包项目 别人把DAO service 组件已经定义好了
表关系 user(用户表) role user_role(用户角色关联表) right(权限) role_right(角色权限关联表)

要求 dao层返回一个user对象 service层返回一个List 对象

当前遇到问题
[code="java"]

    //利用hibernate延迟加载 “load(User.class,pk)”
              ErsUser user = this.getUserDao().findByID(pk);
    Set setRole = user.getErsUserRoles();
    List<ErsRight> setroleright= new ArrayList<ErsRight>();
    System.out.println("service 1 角色大小"+setRole.size());
    Iterator<ErsRole> it = setRole.iterator();
    while(it.hasNext()){
        ErsRole role=(ErsRole) it.next();
        System.out.println("service 2");
        setroleright.addAll(role.getErsRoleRights());
    }

[/code]

此句ErsRole role=(ErsRole) it.next();抱类型转换异常 setRole.size()打印结果正常,说明对象已经正常取出

因为此问题解决不了 所以求高手们帮我把
[code="java"]
Java codeString sql = " select r.id, r.parentid,r.name,r.path,r.isActivity,r.securitycode,r.moduleid "+
"from ers_user u,ers_role re, ers_user_role u_r,ers_right r,ers_role_right r_r where"+
" u.id= u_r.userid and re.id =u_r.roleid and re.id=r_r.roleid and r.id=r_r.rightid and u.id="+cuser.getId();

[/code]

这句sql语句转换为hql语句 由于水平有限 实在是想不出办法,向高手们请教解决办法
[b]问题补充:[/b]
测试员在初期添加数据时 删除了一个关联外键 搭框架时没有改,以至于出现低级 错误 郁闷坏了 周末家里给发现了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • fdsafds
    fdsafds 2009-07-24 22:18
    已采纳

    Set setRole = user.getErsUserRoles();

    debug 一下看 setRole 是什么对象

    点赞 评论
  • iteye_15225
    iteye_15225 2009-07-25 09:15

    这个和转不转HQL没有关系,LZ先看一下Set setRole中到底是不是ErsRole吧。

    如果LZ在ErsUser中正确配置了和ErsRole映射关系,理应不会出现ClassCastException的

    点赞 评论

相关推荐