2013-04-13 65 views
0

我有表結構如下JPA 2查詢中使用聯接表

table user: iduser, firstName, lastName, username, email, dateJoined, dateOfBirth, password 
table tag : idtag, tagName 
table post: idpost, title, content, iduser, date, dateCreated 
table post_tag : idpost, idtag :-join table for many to many relationship for tag and post 
table user_tag : iduser, idtag :-join table for many to many relationship for user and tag 

我想是使用JPA查詢特定用戶的標記的名稱檢索數據。 我也想取回後的用戶,我可以檢索,使用使用此以下NamedQuery

SELECT p FROM Post p WHERE p.user = :user ORDER BY p.dateCreated DESC 

,我是能夠成功地獲取職位用戶的帖子和用戶是兩個實體,是一個有效JPA查詢

但是,當我嘗試檢索就像我檢索了用戶發佈特定的標籤, 所以我試着寫一個連接查詢像這樣

SELECT t.tagName FROM tag t JOIN user_tag ut ON ut.idtag = t.idtag JOIN user u ON ut.iduser = u.iduser WHERE u.username = :username 

但電化學發光免疫法由於user_tag不是實體類型,因此對此查詢的投訴。我無法使用JPA QL制定加入查詢,它可以爲用戶檢索標籤

任何幫助都非常感謝。

回答

0

我能夠制定查詢,如下所示

SELECT tag.tagName FROM Tag tag WHERE tag.users = :users 

這就像我使用後的查詢和用戶

,但我還有一個疑問,如果我們不需要寫在這種情況下,連接查詢,然後在哪些情況下使用JPA QL連接查詢?