2012-02-06 104 views
0

目前,我们有我们的实体之间是这样的一个多一对多的关系,:如何在Hibernate/JPA中表示加权的多对多关系?

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

} 

然而,在某些情况下,这种关系是使用概率(double1.0之间0.0)加权。

代表这个的最佳方式是什么?

在第一个想到的,我想象一个地图的关系,是这样的:

@Entity 
public class Episode { 

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

} 

在Hibernate是这可能吗?

回答

1

您必须使用@MapKeyJoinColumn注释来做到这一点。有一个你想要在javadoc中做什么的例子:

public class VideoStore { 
    @ElementCollection 
    @CollectionTable(name="INVENTORY", 
        [email protected](name="STORE")) 
    @Column(name="COPIES_IN_STOCK") 
    @MapKeyJoinColumn(name="MOVIE", referencedColumnName="ID") 
    Map<Movie, Integer> videoInventory;