0
我有一個連接表映射的列表。我需要做的是使「佈局」和「視圖」的組合不是唯一的,並且每個都有一個索引。我想要做的是做一個Map<Integer, View>
,並以某種方式使連接表有第三列「ID」。會發生什麼是獲取該佈局的視圖,並使用連接表中的ID作爲地圖中的鍵填充它們。JPA映射映射到3列連接表
任何想法如何做到這一點,或者可能是一個更好的想法,我需要什麼?
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(
name = "layout_view",
joinColumns = {@JoinColumn(name = "layout_id", nullable = false)},
inverseJoinColumns = {@JoinColumn(name = "view_id", nullable = false)}
)
private List<View> views;
我想什麼:
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(
name = "layout_view",
joinColumns = {@JoinColumn(name = "layout_id", nullable = false)},
inverseJoinColumns = {@JoinColumn(name = "view_id", nullable = false)}
//some code for third column and populating it as keys
)
private Map<Integer, View> views;
這是什麼整數?僅僅是爲了維護觀點的順序?如果不是,它是爲了什麼?另外,int是一個原始類型。您不能將其用作通用類型。 –
是的,抱歉地圖中的int。我會使用Integer of course。 至於它是什麼 - 我需要能夠改變順序,並把它作爲唯一的鍵,所以我可以有多個相同的視圖的佈局。 –
您可以像使用List一樣使用一個佈局已經有多個相同的視圖。要保存(並能夠更改)訂單,請參閱https://docs.oracle.com/javaee/7/api/javax/persistence/OrderColumn.html和https://docs.jboss.org/hibernate/orm /current/userguide/html_single/Hibernate_User_Guide.html#collections-list。同樣的文檔也描述瞭如果你真的想要的話,如何用地圖實現你的原創想法。 –