簡體   English   中英

Java JPQL,連接表,多對多關系

[英]Java JPQL, join table, many to many relation

我們正在學校進行一個項目,並且嘗試使用JPA實體。 我們在Mysql數據庫中有幾個表,我們正在使用的一個表是分類法,術語,活動和term_campaign_relationship。

我們已經為競選,期限和分類法創建了一個實體。 我們希望獲得與廣告系列相關的所有術語,並按分類ID進行過濾。

我們已將@ManyToMany JPQL與@JoinTable和joinColumns一起使用,從而收到了與該廣告系列有關的所有條款。

但是,如何僅通過分類ID過濾結果呢?

下面的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;

請告知我們是否缺少任何東西...

這是您尋找的解決方案嗎?

Query query = entityManager.createQuery("Select tax from taxonomy tax where tax.id = :arg1"); 
query.setParameter("arg1", 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM