如何在Hibernate / JPA中表示加权的多对多关系?

时间:2012-02-06 18:03:19

标签: java hibernate jpa persistence

目前我们的实体之间存在多对多关系,如下所示:

@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;

}

但是,在某些情况下,使用概率(double0.0之间的1.0)对此关系进行加权。

表示这个的最好方法是什么?

首先想到的是,我想象了一个地图关系,比如:

@Entity
public class Episode {

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(
            ?
    )
    private Map<Category, Double> weightedCategories;

}

这可能在Hibernate中吗?

1 个答案:

答案 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;