【问题标题】:jpa 2 query to retrieve data using join tablejpa 2查询使用连接表检索数据
【发布时间】:2013-04-05 20:07:12
【问题描述】:

我的表结构如下

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 不是实体类型,因此该查询的 Eclipse 投诉。我无法使用可以检索用户标签的 JPA QL 来制定连接查询

非常感谢任何帮助。

【问题讨论】:

    标签: join jpa-2.0 jpql named-query


    【解决方案1】:

    我能够如下制定查询

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

    这就像我用于 Post 和 User 的查询

    但是我还有一个疑问,如果我们这种情况下不需要写join查询,那么在哪些场景下使用JPA QL join查询呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      相关资源
      最近更新 更多