[英]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.