Как я могу представить взвешенные отношения «многие ко многим» в Hibernate / JPA? - PullRequest
0 голосов
/ 06 февраля 2012

В настоящее время у нас есть отношения «многие ко многим» между нашими объектами, что-то вроде этого:

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

1 Ответ

1 голос
/ 06 февраля 2012

Для этого необходимо использовать аннотацию @ 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...