角色表和用户表是多对多关系,我要怎么取出用户表的所有角色在jsp页面上显示?
角色表 role
  rid
  name
  roleid中间表  userole
   urid
   userid
   roleid用户表  user
   uid
   name
   userid我用角色表多对一的形式关联中间表,关联中间表的urid还是roleid,用户表同样。
然后我要怎么取?求大神解决啊- -
如果我关联中间表的urid的话,貌似我怎么弄都是一条数据吧?
如果我关联roleid的话,貌似有多条数据的时候就报错。org.hibernate.HibernateException: More than one row with the given identifier was found: 43, for class: model.UserRole 
HibernateJSP

解决方案 »

  1.   

    我感觉还是用Myeclipse中的ORM直接关联映射比较好,省得自己再动手添加了。
      

  2.   

     两个多对多配置,然后在基类中定义个List就能得到Role
     <bag cascade="save-update" name="rolls" table="user_role">
                <key column="RoleId"/>
                <many-to-many class="User" column="userId"/>
            </bag>
    List<Role> rolls = new ArrayList<Role>();
    提供get set方法,当你得到一个user对象时,直接user.getRolls()就能得到这个用户的所有角色了,不用管什么中间表,hibernate帮你搞定。 <bag cascade="save-update" name="users" table="user_role">
                <key column="userId"/>
                <many-to-many class="Role" column="RoleId"/>
            </bag>
    这个和上面类似。
      

  3.   

    那如果我在jsp页面给多个角色post提交,<input type='checkbox' name='user.roles[0].rid'> 
    这样吗?
      

  4.   

    <input type='checkbox' name='user.roles.rid'> 
    这样写进去了多个角色,但是在保存的时候报错org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred calling getter of model.Users.id; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of model.Users.id org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of model.Users.id java.lang.IllegalArgumentException: object is not an instance of declaring class 
      

  5.   

    就是在页面添加用户,可以给他添加多个角色。就是多个chekbox选择。
      

  6.   

    给你个思路,角色传id过去,可以,隔开,后台以split(",")分割,然后根据这个role的ID把对应的加载了放放到List<Role> roles中然后把这个roles放到user.setRoles(roles)中;然后保存user就行了,说明了,这个角色也是role的属性,只不过是对象的集合,他要什么你就把什么弄好往里set就行了