我想基于此表创建JPA查询
**category**
(pk)CategoryID int (10)
category VARCHAR (45)
**templatecat**
(pk/fk)templateId int(10)
(pk/fk)categoryId int (10)
**template**
(pk)templateId int (10)
template madiumtext
我还有一个“tempaltecat”表,它包含类别和模板表的外键。我想创建查询,根据类别查找模板表中的所有模板,反之亦然。
这是我的表格映射
@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;
提前致谢
答案 0 :(得分:2)
它看起来像@ManyToMany关系,
您可以使用以下配置,而不是使用@OneToMany和@ManyToMany:
在分类中:
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "templatecat", joinColumns = { @JoinColumn(name = "categoryId", unique = true) }, inverseJoinColumns = { @JoinColumn(name = "templateId") })
private Set<Template> templates;
在Template类中:
@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 = ?
希望它能帮到你。