我需要在 manytomany 生成的表中有额外的列
有 2 个实体相互关联,多对多(用户多对多组)
@Entity
public class User {
//other fields
private Set<Group> groups = new HashSet<Group>(0);
}
@Entity
public class Group {
//other fields
private Set<User> users = new HashSet<User>(0);
}
Run Code Online (Sandbox Code Playgroud)
所以在这里它在数据库中生成 3 个表作为
表 1 - 用户
表 2 - 组
表 3 - 用户组
现在我需要 UserGroup 表中的其他字段,那么如何指定该字段以及在哪个实体中指定?
附加字段将是
私有布尔值 isThisUserIsGroupManager;
这样,我可以让该组的用户也是组管理员。
关系没有要设置的持久属性,只有实体才有。这就是为什么你需要第三个实体之间的原因。它将有两个@Id属性,因此@IdClass是需要的,因为身份来自Group和User:
@Entity
public class User {
@Id int id;
@OneToMany(mappedBy = "user")
private Set<GroupMemberShip> groupMemberShips;
...
}
@Entity
public class Group {
@Id int id;
@OneToMany(mappedBy = "group")
private Set<GroupMemberShip> groupMemberShips;
...
}
@Entity
@IdClass(GroupMemberShipId.class)
public class GroupMemberShip {
@Id @ManyToOne User user;
@Id @ManyToOne Group group;
private boolean isThisUserIsGroupManager;
...
}
public class GroupMemberShipId implements Serializable {
int user;
int group;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7588 次 |
| 最近记录: |