首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

这样一个三元的多对多关系该怎么设计与映射

2012-10-31 
这样一个三元的多对多关系该如何设计与映射?例如下面3个实体类:public class Role {private Long idpriva

这样一个三元的多对多关系该如何设计与映射?
例如下面3个实体类:

public class Role {

private Long id;

private String name;
}

public class Category {

private Long id;

private String name;

private Category p_category;
}

public class Staff
{
  
   private Long id;
 
   private String name;
}

Staff与Category多对多,Staff与Role也是多对多
画了一个ER图(不知道怎样直接能贴出来,只好放附件),不知道这样的设计是否合理?

我是这么想的:把上面3个实体间的联系类authority实体化,把多对多都转换成一对多,即:
Staff,Category,Role分别与Authority一对多
public class Authority {

private Long id;

private Category category;

private Staff manager;

private Role role;

private Integer status;//0/1,状态是否有效
}
这样通过Authority就能清楚知道谁被授予什么管理员身份(角色)去管理哪个分类,
但是我开始转不过弯了,多对多里,可以直接staff.roles,staff.categories,把多对多拆成与中间表Authority一对多之后,我该怎么才能通过staff查询出对应的roles呢?是不是得自己写SQL做左连接,右连接才能查询出来?List roles;//用户Staff AIterator authoritys=A.authoritys.iterator();if(authoritys.hasNext()){Authority auth=(Authority)authoritys.next()roles.add(auth.role);}

如果分别使用many-to-many来对Role,Category,Staff三实体进行关联(不实体化联系Authority),直接A.roles就实现用户A的角色查询了,如上面拆成一对多之后感觉好麻烦,我想不出怎样写才能更简便的查询出来

热点排行