它看起來像一個@ManyToMany關係
@Entity
@Table(name = "category")
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "templatecat", joinColumns = { @JoinColumn(name = "categoryId", unique = true) }, inverseJoinColumns = { @JoinColumn(name = "templateId") })
private Set<Template> template;
@Entity
@Table(name = "template")
@ManyToOne(optional = true)
@JoinTable(name = "templatecat", joinColumns = { @JoinColumn(name = "templateId") }, inverseJoinColumns = { @JoinColumn(name = "categoryId") })
private Category category;
感謝,
而不是使用@OneToMany和@ManyToMany的,你可以使用下面的配置:
分類類別:
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "templatecat", joinColumns = { @JoinColumn(name = "categoryId", unique = true) }, inverseJoinColumns = { @JoinColumn(name = "templateId") })
private Set<Template> templates;
模板類:
@Entity
@Table(name = "template")
@ManyMany(optional = true, mappedBy="templates");
private Set<Category> categories;
如果你想看到一個給定類別的所有模板,查詢將是:
select o.templates from Category o where o.id = ?
反向從模板工程,以及(所有類別)
select o.categories from Template o where o.id = ?
希望它對你有幫助。
我認爲我的關係是正確的,因爲一個類別可以有很多模板,但一個模板不能有多個類別。但是我認爲我的問題有點不清楚,我想查找給定類別名稱上的所有模板。 – 2012-03-26 07:25:02
所以,爲什麼不使用'@ OneToMany'(類別中)和'@ ManyToOne'(模板中)關係?通過這種方式,你不需要一箇中間表,查詢就是:'從類別o中選擇o.templates,其中o.name =?' – leozin 2012-03-26 17:04:08