Я не уверен, что понимаю эту странную диаграмму ... RegionLanguage имеет какой-то внешний ключ, указывающий на Region.id, я так понимаю?Если у Region есть только один столбец (как показано на «диаграмме»), вы можете просто отобразить только «RegionLanguage», и у вас будет только один объект, как вы хотели - без потери информации;).
А если серьезно, как бы вы хотели, чтобы это было сопоставлено?Хотите ли вы иметь что-то вроде этого:
class Region {
//.. the missing fields not shown in diagram
List<String> languages; // take only language to avoid creating separate entity for region language
}
или что-то вроде этого:
class RegionInnerJoinRegionLanguage {
// all fields from Region
// all fields from RegionLanguage
}
В любом случае вы не сказали, как остальные таблицы соединяются с вашим i18nстолы.Из вашего описания, я предполагаю, что все таблицы имеют fk для RegionLanguage.Я не уверен, для чего таблица регионов используется в общей схеме вещей.Я думаю, это просто для группировки языков ... Я представляю, что это «модели» Швейцарии (один «регион» 4 языка) ... Но что вы будете делать с языками, на которых говорят в нескольких регионах?У вас будет несколько французских, английских и т. Д. Языков (по одному для каждого региона), и все данные умножаются для каждого из этих ??
Я знаю, что вы не спрашиваете об этом ... Я просто думаю, что выУпрощенная структура данных для этого вопроса ... Настолько, что трудно угадать, чего вы действительно хотите достичь.
В любом случае, если вы хотите использовать подход списка строк, вы можете попробовать это:
@ElementCollection
@CollectionTable(name="RegionLanguage",
joinColumns=@JoinColumn(name="regionID") // or whatever... it's not on your diagram.
)
@Column(name="langage")
private List<String> langages;
Я до сих пор не понимаю, почему вы хотите поместить обе таблицы в одну сущность ... Если это данные только для чтения, вы можете попробовать создать представление и отобразить его -- всегда «выход»;).Но, на мой взгляд, это (на самом деле, оба) немного усложняет ситуацию - в будущем это укусит вас.Мой совет - просто использовать «простое сопоставление OneToMany».