JPA 2和泛型类

时间:2013-10-13 10:43:37

标签: java java-ee jpa-2.0 datapersistance

在我的数据模型中我需要一个通用的表“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

colomn Person.country只引用了dicionnary.key列,其中typ ='COUNTRY' 和Person.profession只引用列dictionnary.key,其中typ ='PROFESSION'

是否有任何解决方案可以使用JPA 2生成DataModel。

提前致谢!!

1 个答案:

答案 0 :(得分:1)

取决于解决方案的含义。我认为没有办法将两个实体映射到同一个表,除非你使用继承。

所以选项是:

  • 使用继承并使CountryProfession的实体相关。检查@DiscriminatorColumn@DiscriminatorValueMore info here

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

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