2013-10-13 32 views
0

在我的數據模型,我需要有一個通用表「DICTIONNARY」所有的值存儲在數據庫中是這樣的:JPA 2和一般類

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其中典型值= 'COUNTRY' 和Person.profession只是引用列dictionnary.key其中典型值= '職業'

是否有任何解決方案,使該數據模型與JPA 2.

在此先感謝!

回答

1

取決於您的解決方案。我認爲沒有辦法將兩個實體映射到同一個表,除非你使用繼承。

因此,選項有:

  • 使用繼承和使CountryProfession相關的實體。檢查@DiscriminatorColumn@DiscriminatorValueMore info here

  • 使用帶有組合鍵的「通用」實體(@IdClass)。這將是你的代碼將解釋檢索到的屬性作爲可能性。

  • 修復你的數據模型。在同一個表中混合不相關的項目會違反標準化的設計,並會使用其他數據庫工具(如外鍵)創建問題。爲國家創建一個表格,爲專業創建另一個表格。這是我建議的方法。