[英]JPA Shared Entity mapping
我有一個場景,我有一個名為Page的對象,另一個名為Tag的對象,這兩者之間的關系是Page具有Tags(很多),但是相同的Tag也可以與Product共享,這里的關系也就是Product具有標簽(很多)。
在正常情況下,我將在Tag中創建一個type列,其中type可能是Enum值(產品,頁面),並使用諸如SELECT * from tag的查詢,其中parent_id = page_id和type = page。
如何在JPA中執行此操作(如何創建此關系以及如何查詢數據)
我認為您應該創建兩個關聯表。 一種用於將頁面與標簽相關聯,一種用於將產品與標簽相關聯。 代碼:
@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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.