簡體   English   中英

在JPA查詢中加入和計數的意外結果

[英]unexpected results of join and count in jpa query

我想檢索特定用戶在所有帖子中使用的標簽數。 例如,如果一個用戶寫了三篇文章,而對於兩篇文章則用“ someTag”標記,則查詢應將標記“ someTag”的計數寫為2

用戶和帖子之間存在一對多的關系。 我正在使用eclipseLink for jpa,帖子和標簽之間有很多關系,我為此編寫了這個jpa查詢,如下所示

SELECT COUNT(tag.tagName)  FROM Post post, Tag tag JOIN tag.posts posts WHERE post.user = :user AND tag.tagName = :tagName

但這給了我標簽的乘積,我用我的標簽標記了9個帖子的所有帖子都為'friends,我總共有17個帖子,而我得到的結果是153,即他們的乘法。

我嘗試了一個簡單的mysql查詢,如下所示

SELECT COUNT(*)
FROM Tag t
JOIN post_tag pt ON pt.idTag = t.idtag
JOIN Post p ON pt.idpost = p.idpost
JOIN User u ON p.iduser = u.iduser
WHERE u.username = 'prasadkharkar'
AND t.tagName = 'friends'

這很好,給我結果為9。

我希望在我的jpa查詢中得到這樣的結果。 你能解釋一下我在做什么錯嗎?

通過從帖子和標簽中進行選擇,您就可以制作笛卡爾積。 只需在您的SQL查詢中進行操作,然后使用聯接:

select count(tag.tagName) 
from Tag tag
join tag.posts post 
where post.user = :user 
and tag.tagName = :tagName

暫無
暫無

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

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