首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多对多条件查询

多对多条件查询
EN

Stack Overflow用户
提问于 2021-07-15 05:56:15
回答 1查看 26关注 0票数 0

我正在尝试实现一个帖子的标签功能。

我正在使用下面显示的表格对问题进行建模:

我想进行一个查询,以检索具有某些特定标签的所有帖子。谁能告诉我如何才能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2021-07-15 22:41:08

正确地设置数据模型应该能起到作用

代码语言:javascript
复制
@Entity(name = "Post")
@Table(name = "post")
public class PostJpa {

   @Id
   private Long id;

   @ManyToMany
   @JoinTable(name = "post_tag", joinColumns = @JoinColumn(name = "postId"), inverseJoinColumns = @JoinColumn(name = "tag_id"))
   Set<TagJpa> tags;
}

@Entity(name = "Tag")
@Table(name = "tag")
public class TagJpa {

    @Id
    @Nullable
    private Long id;

    @Nullable
    private String name;

    @Nullable
    @ManyToMany(mappedBy = "tags")
    Set<PostJpa> posts;
}

这样,您就可以创建以下简单的连接

代码语言:javascript
复制
public void getPosts() {
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();

    CriteriaQuery<PostJpa> query = builder.createQuery(PostJpa.class);
    Root<PostJpa> root = query.from(PostJpa.class);
    Join<Object, Object> subRoot = root.join("tags", JoinType.INNER);

    query.where(builder.equal(subRoot.get("name"), builder.literal("jpa")));

    entityManager.createQuery(query).getResultList();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68385521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档