在我的数据模型中我需要一个通用的表“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。
提前致谢!!
答案 0 :(得分:1)
取决于解决方案的含义。我认为没有办法将两个实体映射到同一个表,除非你使用继承。
所以选项是:
使用继承并使Country
和Profession
的实体相关。检查@DiscriminatorColumn
和@DiscriminatorValue
。 More info here
使用带有复合键的“通用”实体(@IdClass
)。将您的代码解释为检索到的任一种可能性。
修复您的数据模型。在同一个表中混合不相关的项目违反了规范化设计,并将使用其他数据库工具(如外键)产生问题。为国家和专业创建一个表格。这是我建议的方法。