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

时间:2013-01-30 18:54:39

标签: java jpa mapping replace

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

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

简短版本:

  • 产品 - >替换(两种类型,每种类型之一)
  • 产品 - >清单 它取代的产品(两种类型的替代品)

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

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

我的问题是让这个链接双向进行。正如我所说,我希望能够获得有关产品的产品清单作为替代产品。

如果不使用大量的java逻辑,这可能吗?

我愿意接受任何建议。

1 个答案:

答案 0 :(得分:0)

听起来像双向产品之间需要ManyToMany。拥有方将使用类型作为键来设置mapkey映射。另一方不需要密钥,并且会反映它可以替换的所有产品。 这在这里描述 http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Map_Key_Columns_.28JPA_2.0.29