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。同样的文档也描述了如果你真的想要的话,如何用地图实现你的原创想法。 –