具有子类型的双向多对多JPA映射
我的基本场景是一个双向的多对多关系,该关系正被JPA映射。很简单。然而,我需要在映射中添加一个“类型”,我正在努力实现最好的实现。以下是大纲:具有子类型的双向多对多JPA映射,jpa,many-to-many,discriminator,Jpa,Many To Many,Discriminator,我的基本场景是一个双向的多对多关系,该关系正被JPA映射。很简单。然而,我需要在映射中添加一个“类型”,我正在努力实现最好的实现。以下是大纲: Network Set<Member> defaultMembers; //members that meet the network definition Set<Member> suppressedMembers; //members that meet the network definition, but ar
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\u-member,suppressed\u-member,added\u-member
),但从另一个角度看,这是不可能的。我想我可以使用一个链接表并将其转换为一个带有鉴别器列的实体,但每次我看到有人使用链接表作为实体时,代码似乎都会变成一场灾难
我发现了许多类似的问题,但这些问题要么过于具体,要么答案没有完全涵盖我正在寻求的解决方案。关于处理这种情况的最佳方法有什么建议吗?显而易见的便携式解决方案如下:
附件
实体,具有成员、网络和附件类型(默认、抑制或添加)。在网络和附件之间有一个OneToMany双向关联,在成员和附件之间有另一个OneToMany双向关联如果不适合,请解释原因。第一种解决方案非常适合;主要的障碍是,从会员的角度来看,我不在乎依恋的类型。再看一遍,我真正的问题可能是“当包含网络关系时,有没有一种模式可以让我对成员的查询保持简单,而不必针对三个单独的集合?”我将继续编辑我的问题。如果这是主要目标,我的第二个解决方案可能是最好的。好的,我只是重新阅读了你的第二个建议,并意识到它不是我最初设想的那样。我来看看如何设置。谢谢