Как представить различные отношения ассоциации по столбцу дискриминатора, кроме одной таблицы ассоциации в jpa? - PullRequest
0 голосов
/ 11 февраля 2020

Я занимаюсь разработкой системы блогов, между сущностью «Пользователь» и сущностью «Пост» может существовать несколько взаимосвязей, например:

  • комментарий
  • upvote
  • пользователь загружает изображения
  • ...

Я решил использовать одну таблицу ассоциации для представления этих отношений. Чтобы представить отношение комментария, я мог бы сконфигурировать свою сущность java, как показано ниже:

@Entity
class Blog{
    @Id
    private Long id;

    private String title;

    private String content;

    // ...

    @ManyToMany
    @JoinTable(
        name = "blog_user_association",
        joinColumns = @JoinColumn(name = "blog_id"),
        inverseJoinColumns = @JoinColumn(name = "user_id")
    )
    private Set<Comment> comments;
}

blog_user_association - это имя таблицы ассоциации, а (blog_id, user_id) - ее первичный ключ.

Это хорошо работает, однако, что если я захочу представить несколько отношений в этой таблице blog_user_association и разделить эти отношения одним столбцом дискриминатора, например type? Для отношения комментариев значение type равно 1, для отношения upvote значение type равно 2. Как мне поступить с помощью jpa?

...