我正在尝试实现一个 Hibernate 关系,其中实体 A 通过引用一组实体@OneToManyB。这些实体之一B可能具有特殊作用,因此(可选)也应由Avia引用@OneToOne。
实体A:
public class Group {
@Id
@GeneratedValue
@Column(name = "id", updatable = false)
private int id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "group")
private List<GroupMember> members = new ArrayList<>();
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "groupSpokesman")
private GroupMember spokesman;
}
实体B:
public class GroupMember {
@ManyToOne
@JoinColumn(name = "groupId")
private Group group;
}
表group:
id | groupSpokesman | ...
该列引用了被选为发言人groupSpokesman的那个的 ID 。GroupMember如果 GroupMembers 中的一个是 Spokesman,则他应该保留在 GroupMembers 集合中。NULL如果没有选出发言人并且所有 GroupMembers 都受到平等对待,则该列可能是。
表groupMember:
id | groupId | ...
该列groupId引用 所属的组的 ID GroupMember。
Hibernate 成功保存实体。如果 GroupMembers 都不是发言人,则一切正常。但是一旦其中一个实体Group.members也被分配给,Hibernate 就会将该特定 GroupMember 的Group.spokesman外键设置为,这意味着发言人不再是该组的成员。外键已正确设置为发言人的 ID。GroupMember.groupNULLGroup.spokesman
摇曳的蔷薇
相关分类