目前我们的实体之间存在多对多关系,如下所示:
@Entity
public class Episode {
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "episode_category",
joinColumns = { @JoinColumn(name = "episode_id") },
inverseJoinColumns = { @JoinColumn(name = "category_id") }
)
private List<Category> categories;
}
但是,在某些情况下,使用概率(double
和0.0
之间的1.0
)对此关系进行加权。
表示这个的最好方法是什么?
首先想到的是,我想象了一个地图关系,比如:
@Entity
public class Episode {
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
?
)
private Map<Category, Double> weightedCategories;
}
这可能在Hibernate中吗?
答案 0 :(得分:1)
您必须使用@MapKeyJoinColumn注释才能执行此操作。有一个例子,你想在javadoc中做什么:
public class VideoStore {
@ElementCollection
@CollectionTable(name="INVENTORY",
joinColumns=@JoinColumn(name="STORE"))
@Column(name="COPIES_IN_STOCK")
@MapKeyJoinColumn(name="MOVIE", referencedColumnName="ID")
Map<Movie, Integer> videoInventory;