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"/>

posted @ 2009-06-30 13:49  meetrice  阅读(303)  评论(0编辑  收藏  举报