jpa多个双向多对一关系到同一字段

Posted

技术标签:

【中文标题】jpa多个双向多对一关系到同一字段【英文标题】:jpa multiple bidirectional many to one relationship to the same field 【发布时间】:2013-01-14 17:11:11 【问题描述】:

我有一个问题,希望有人能帮我解决。

我的系统有一个实体“产品”。在产品上应该可以设置“替换产品”(应该销售的产品而不是原始产品)。我们有两种替换方式。在产品上,我需要能够设置无、其中一种或两种类型的替换产品。但是,每种类型只能设置一个产品。除此之外,我希望能够查看一个产品并获得将该产品作为替代产品的其他产品的列表。

短版:

产品->替换(两种,一种) 产品 -> 列表 它替换的产品(两种替换类型)

到目前为止,我的解决方案是创建一个带有子类(每个替换类型一个)的抽象类 ReplacementProduct,并带有鉴别器值。 数据库中的replacementproduct表有以下字段: id、replacementproduct、replacementType

此外,我在 Product 实体上放置了两个字段(替换类型的子类实例)。像这样,我获得了从产品到具有替换类型的另一种产品的单向链接。

我的问题是让这个链接双向。正如我所说,我希望能够获得一份产品列表,其中有问题的产品作为他们的替代产品。

这是否可能不使用大量 java 逻辑?

我愿意接受任何建议。

【问题讨论】:

【参考方案1】:

听起来产品之间需要双向多对多。拥有方将设置映射键映射,使用类型作为键。对方不需要钥匙,会反映它可以替换的所有产品。 这在此处进行了描述 http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Map_Key_Columns_.28JPA_2.0.29

【讨论】:

以上是关于jpa多个双向多对一关系到同一字段的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 多对一关联查询

JPA:获取双向多对一关系

flask 定义数据关系(多对一)

hibernate多对一关联映射两种形式的理解

Hibernate中一对多和多对一关系

Java JPA ORM 一对多 多对一