zoukankan      html  css  js  c++  java
  • rapid 添加 多对多 步骤 (用户菜单示例)

    rapid 添加  多对多 步骤 (用户菜单示例)

    1.Users添加 private Set<Menus> menus = new LinkedHashSet<Menus>();
    2.生成getter setter
    3.在getter方法上添加注解
     @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
     @JoinTable(joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "MENU_ID") })
     // Fecth策略定义
     @Fetch(FetchMode.SUBSELECT)
     // 集合按id排序.
     @OrderBy("id")
    4.添加非持久化属性getMenuIds方法
     // 非持久化属�性.
     @Transient
     @SuppressWarnings("unchecked")
     public List<Long> getMenuIds() throws Exception
     {
      return ReflectionUtils.fetchElementPropertyToList(menus, "id");
     }

    5.在Menus 添加 private Set<Users> users = new LinkedHashSet<Users>();
    6.生成getter setter
    7.在getter方法上添加多对多被引用注解 ,其中menus为Users中Menus的属性名称
     @ManyToMany(mappedBy = "menus")

    8.在UsersAction中 添加

     private MenusManager menusManager;//通过spring自动注入
     private List<Menus> allMenus; //全部可用角色列表
     private List<Long> checkedMenuIds; //页面中钩选的角色id列表

    9.生成getter setter
    10.在action的操作方法中调用

    edit()方法中
      allMenus = menusManager.getAll();
      checkedMenuIds = users.getMenuIds();
    update()方法
      HibernateWebUtils.mergeByCheckedIds(users.getMenus(), checkedMenuIds, Menus.class);

    11.在页面中添加checkbox list标签
     <s:checkboxlist name="checkedMenuIds"  list="allMenus"  listKey="id" listValue="name" theme="simple"/>

  • 相关阅读:
    linux poll 和 select
    linux测试 scullpipe 驱动
    linux进程唤醒的细节
    linux进程互斥等待
    linux 手动睡眠
    linux一个进程如何睡眠
    [POJ 2431]Expedition
    【MongoDB数据库】MongoDB 命令入门初探
    高速排序为什么快?
    [050] 微信公众平台开发入门视频教程已公布
  • 原文地址:https://www.cnblogs.com/meetrice/p/1513932.html
Copyright © 2011-2022 走看看