ManyToMany的一个问题

现在有这么一个问题,以下是我定义的一个用户实体

@Entity
public class Users {
/* 主键,20位*/
private String username;
/* 20位, 不能为null /
private String password;
/
姓名 10位 不能为null /
private String realname;
/
性别 不能为null /
private Gender gender;
/
学历 10位 /
private String degree;
/
身份证 必须提供 /
private IDCard idCard;
/
毕业院校 20位 /
private String school;
/
联系电话 20 /
private String phone;
/
电子邮件 50 /
private String email;
/
照片 41 /
private String imageName;
/
员工在职状态 true为在职,false为离职 */
private Boolean visible = true;
private Department department;
private Set groups = new HashSet();
private Set privileges = new HashSet();

/**
 * 添加权限组
 * @param group
 */
public boolean addPrivilegeGroup(PrivilegeGroup group){
    return this.groups.add(group);
}

/**
 * 撤消权限组
 * @param group
 * @return
 */
public boolean removePrivilegeGroup(PrivilegeGroup group){
    return this.groups.remove(group);
}

/**
 * 添加用户权限
 * @param privilege
 */
public boolean addSystemPrivilege(SystemPrivilege privilege){
    return this.privileges.add(privilege);
}

/**
 * 撤消用户权限
 * @param privilege
 * @return
 */
public boolean removeSystemPrivilege(SystemPrivilege privilege){
    return this.privileges.remove(privilege);
}

@ManyToMany(cascade=CascadeType.REFRESH,fetch=FetchType.EAGER)
@JoinTable(name="user_role", joinColumns=@JoinColumn(name="username"),
        inverseJoinColumns=@JoinColumn(name="groupid", referencedColumnName="id"))
public Set<PrivilegeGroup> getGroups() {
    return groups;
}
public void setGroups(Set<PrivilegeGroup> groups) {
    this.groups = groups;
}

@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)
@JoinTable(name="user_privilege",joinColumns={@JoinColumn(name="username")},
        inverseJoinColumns={@JoinColumn(name="model_id", referencedColumnName="id"),
                            @JoinColumn(name="privilegeValue", referencedColumnName="privilegeValue")})
public Set<SystemPrivilege> getPrivileges() {
    return privileges;
}
public void setPrivileges(Set<SystemPrivilege> privileges) {
    this.privileges = privileges;
}

现在由用户实体和权限实体映射出一张表user_privilege但我希望在user_privilege这张表里添加一个字段visible,因为user_privilege这个张通过用户实体与权限的主键映射出来的,所以不能用用户实体与权限实体的visible属性。手工在数据库添加这个一个列会出现无法用户实体操作到这张表的问题。
想请教高手怎么处理这个问题
万分感谢

1个回答

将User和Privilege的中间表提出来,作为一个实休UserPrivilege,

 public class UserPrivilege{
      private User user;
      private Privilege privilege;
 }

这样的话,就将一个多对多的关系以两个一对多的关系来体现,并且想要给中间实体添加属性就只需要在中间实体类中添加就可以了。
public class User{
private List userPrivileges;
}
public class Privilege{
private List userPrivileges;
}

详情可以看看我的一篇博客 http://dreamzhong.iteye.com/blog/1129207

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐