我的基本场景是与JPA映射的双向多对多关系。很简单。但是,我需要在映射中添加“类型”,并且我正在努力实现最佳实现。这是大纲:
Network
Set<Member> defaultMembers; //members that meet the network definition
Set<Member> suppressedMembers; //members that meet the network definition, but are hidden.
Set<Member> addedMembers; //memders that don't meet the network definition, but have been added in anyway.
Member
Set<Network> attachedNetworks;
如果我不需要这是双向的(例如,我只需要从网络中获取成员而不需要能够以其他方式旅行),对我来说最明显的解决方案是每组成员(network_member, suppressed_member, added_member
)的链接表,但从另一个方面来说就是分崩离析。我想我可以使用单个链接表并将其转换为带有鉴别器列的实体,但每次我看到有人使用链接表作为实体时,代码似乎变成了灾难。
我发现了很多类似的问题,但问题要么有点过于具体,要么答案还没有完全覆盖我正在寻求的解决方案。有关处理这种情况的最佳方法的任何建议吗?
答案 0 :(得分:0)
明显的便携式解决方案如下:
Attachment
实体,具有成员,网络和附件类型(默认,禁止或添加)。在Network和Attachment之间建立OneToMany双向关联,在Member和Attachment之间建立另一个OneToMany双向关联。如果它们不适合,请解释原因。