2012-02-06 99 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;