我有2個表格:如何在Hibernate中映射這種關係?
表格Data
:id
,加上很多字段。這些字段中的某些字段是引用來自下一個表的多語言值的「代碼」,例如country_code
,continent_code
。
其中包含多語言碼,與列中的表Thesaurus
:code
,code_type
,language
,text
。代碼對於一個code_type
是唯一的,但可能會有多次使用不同'code_type'值的相同代碼。從該表
實施例的數據:
code code_type language text
----------------------------------------------------
USA CNT EN United States
USA CNT FR Etats-Unis
FR CNT EN France
FR CNT FR France
FR LNG EN French
FR LNG FR Français
所以數據表的country_code
列可能包含'FR'
或'US'
,並且language code
列可能包含'FR'
爲好。暗含的是,country_code
列包含國家代碼'CNT'
,而language_code
列包含語言類型「LNG」的代碼。
我怎樣才能在Hibernate中映射,這樣我可以在我的Java代碼中做這樣的事情: (假設該應用程序的當前區域設置爲美國英語)
myData.getCountryCode(currentLocale.getlanguage()); --> returns 'France'
myData.getLanguageCode(currentLocale.getlanguage()); --> returns 'French'
請注意,我不能修改數據庫模式,我沒有設計自己!
感謝您的回答。我得到了抽象類+繼承映射位。這似乎是一個好主意。 但是,您如何建議我映射數據實體端的關係?作爲使用language_code列作爲JoinColumn的一對多?我如何最終得到一個包含不同語言實體的地圖,並將語言代碼作爲關鍵字,就像我們的例子一樣? – 2010-07-20 15:17:05
好的,我明白了:我使用Map作爲關係,並且使用@MapKey註釋來指定語言應該是Map中的鍵。 –
2010-07-20 16:54:28