0

在我的数据模型中,我需要一个通用表“DICTIONNARY”,它将所有值存储在数据库中,如下所示:

TYP         KEY          VALUE
---------------------------------
COUNTRY     TUN          TUNISIA
COUNTRY     FRA          FRANCE
PROFESSION  LAW          Lawyer
PROFESSION  FRA          Farmer

还有其他表可以引用通用表,如表 Person

CODE        NAME         COUNTRY          PROFESSION
-----------------------------------------------------
1           PAUL         TUN              FRA      
2           Armin        FRA              DOC

列 Person.country 仅引用列 dictionnary.key ,其中 typ='COUNTRY' 和 Person.profession 仅引用列 dictionnary.key ,其中 typ='PROFESSION'

是否有任何解决方案可以使用 JPA 2 制作该 DataModel。

提前致谢 !!

4

1 回答 1

1

取决于你所说的解决方案是什么意思。我认为没有办法将两个实体映射到同一个表,除非您使用继承。

所以选项是:

  • 使用继承并使实体相关CountryProfession。检查@DiscriminatorColumn@DiscriminatorValue更多信息在这里

  • 使用带有复合键 ( @IdClass) 的“通用”实体。您的代码会将检索到的属性解释为任一可能性。

  • 修复您的数据模型。在同一个表中混合不相关的项目不符合规范化设计,并且会在使用其他数据库工具(如外键)时产生问题。为国家和职业创建一个表。这是我建议的方法。

于 2013-10-13T10:58:19.170 回答