Я думаю, вы должны создать две таблицы ассоциаций. Один, чтобы связать Страницы с тегами, другой, чтобы связать Продукты с тегами. Код:
@Entity
@Table(name = "page")
class Page {
....
@OneToMany
@JoinTable(name = "jnd_pages_tags", joinColumns = @JoinColumn(name = "page_fk"),
inverseJoinColumns = @JoinColumn(name = "tag_fk"))
private Set<Tag> tags;
}
@Entity
@Table(name = "page")
class Product {
....
@OneToMany
@JoinTable(name = "jnd_products_tags", joinColumns = @JoinColumn(name = "products_fk"),
inverseJoinColumns = @JoinColumn(name = "tag_fk"))
private Set<Tag> tags;
}
@Entity
@Table(name = "tags")
class Tag {
.....
}
, чтобы выбрать соответствующие теги для страницы, используйте
SELECT p.t FROM Page p WHERE p.id = :id
, чтобы выбрать соответствующие теги для продукта, используйте
SELECT p.t FROM Product p WHERE p.id = :id