我不確定我是否理解這個奇怪的圖表... RegionLanguage有一些指向Region.id的某種外鍵,我接受它?如果區域只有一列(如'圖表'所示),則只需簡單映射'區域語言',只需要一個實體即可 - 不會丟失信息;)。
但嚴重的是,你會如何映射它?你想有這樣的事情:
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",
[email protected](name="regionID") // or whatever... it's not on your diagram.
)
@Column(name="langage")
private List<String> langages;
我還是不明白,你爲什麼要把這兩個表成一個單一的實體.. 。如果它是'只讀'數據,你可以嘗試創建一個視圖並將其映射 - 總是一個'出路';)。但事實上,它們(其實都是)過於複雜,在我看來 - 將來會咬你的。我的建議是「簡單的OneToMany映射」。
您是否找到了解決此問題的解決方案?如果是這樣,你介意分享它(作爲答案)嗎?我們面臨着同樣的問題,還沒有找到一個很好的解決方案(大多數結果是N + 1查詢,我們絕對不想這麼做)。 – wimvds
您正在使用哪個JPA提供程序? – siebz0r
我不完全理解爲什麼Region和RegionLanguage之間的簡單@OneToMany關聯不適合您? –