我们正在学校开展一个项目,并尝试使用实体JPA。 我们的Mysql数据库中有几个表,我们使用的是分类,术语,活动和term_campaign_relationship。
我们为广告系列,期限和分类制定了一个实体。我们希望获得与广告系列相关的所有条款,并按分类标识进行过滤。
我们已经将@ManyToMany JPQL与@JoinTable和joinColumns一起使用 有了这个,我们收到了与该活动相关的所有条款。
但是我们如何仅通过分类标识获得结果?
下面的sql语句显示了我们正在寻找的结果......
SELECT
t.id, t.term_name, t.taxonomy_id
FROM
term t
INNER JOIN
taxonomy ty ON ty.id = t.taxonomy_id
INNER JOIN
campaign c ON c.id IN (SELECT
tc.campaign_id
FROM term_campaign_relationship tc
WHERE tc.term_id = t.id
)
WHERE c.id = 1 AND ty.id = 1;
这来自我们在java中的广告系列实体
@ManyToMany()
@JoinTable(
name="term_campaign_relationship",
joinColumns={@JoinColumn(name="campaign_id", referencedColumnName="id")},
inverseJoinColumns={@JoinColumn(name="term_id", referencedColumnName="id")})
private Collection<Term> programTypes;
请告知我们是否遗漏了任何东西......
答案 0 :(得分:0)
这是您寻找的解决方案吗?
Query query = entityManager.createQuery("Select tax from taxonomy tax where tax.id = :arg1");
query.setParameter("arg1", 1);