Я занимаюсь разработкой системы блогов, между сущностью «Пользователь» и сущностью «Пост» может существовать несколько взаимосвязей, например:
- комментарий
- 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?