0

我的基本场景是使用 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),但反过来说就会分崩离析。我想我可以使用单个链接表并将其转换为具有鉴别器列的实体,但是每次我看到有人将链接表用作实体时,代码似乎都变成了灾难。

我发现了许多类似的问题,但这些问题要么过于具体,要么答案并没有完全涵盖我正在寻找的解决方案。有关处理这种情况的最佳方法的任何建议?

4

1 回答 1

0

显而易见的便携式解决方案如下:

  1. 使用三个连接表,并且在 Member 实体中也有 3 组网络
  2. Attachment使用具有成员、网络和附件类型(默认、隐藏或添加)的附加实体。在 Network 和 Attachment 之间有一个 OneToMany 双向关联,在 Member 和 Attachment 之间有另一个 OneToMany 双向关联。

如果它们不适合,请解释原因。

于 2012-02-14T17:06:13.527 回答