У меня есть 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» для языка.
Как я могу отобразить это в спящем режиме, так что я могу сделать что-то подобное в моей Java-коде: (давайте предположим, текущую локаль приложения является американским английским)
myData.getCountryCode(currentLocale.getlanguage()); --> returns 'France'
myData.getLanguageCode(currentLocale.getlanguage()); --> returns 'French'
Обратите внимание, что я не могу модифицировать схему БД, которую я сам не проектировал!
Спасибо за ответ. Я получаю бит абстрактного класса + наследования. Это кажется хорошей идеей. Однако, как вы предлагаете мне сопоставить отношения на стороне объекта Data? как один-ко-многим, используя столбец language_code как JoinColumn? Как мне получить карту, содержащую сущности для разных языков, с кодом языка в качестве ключа, как в нашем примере? –
ОК, я понял: я использую Map для отношения, и я использую аннотацию @MapKey, чтобы указать, что язык должен быть ключом на Карте. –