2013-04-13 67 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连接查询?