我正在尝试实现一个帖子的标签功能。
我正在使用下面显示的表格对问题进行建模:

我想进行一个查询,以检索具有某些特定标签的所有帖子。谁能告诉我如何才能做到这一点?
发布于 2021-07-15 22:41:08
正确地设置数据模型应该能起到作用
@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;
}这样,您就可以创建以下简单的连接
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();
}https://stackoverflow.com/questions/68385521
复制相似问题