【问题标题】:How can I represent a weighted many-to-many relationship in Hibernate/JPA?如何在 Hibernate/JPA 中表示加权多对多关系?
【发布时间】:2012-02-06 18:03:19
【问题描述】:

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

@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.01.0 之间)进行加权。

最好的表达方式是什么?

首先想到的是,我想象了一个 Map 关系,类似于:

@Entity
public class Episode {

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

}

这在 Hibernate 中可行吗?

【问题讨论】:

    标签: java hibernate jpa persistence


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2011-03-15
      相关资源
      最近更新 更多