微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Springboot JPA 的两个表的任何列中匹配搜索关键字的两个表

如何解决在 Springboot JPA 的两个表的任何列中匹配搜索关键字的两个表

假设我有两个实体类 Post 和 Tag 多对多映射。

@Entity
@Table(name = "posts")
public class Post {
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    int id;
    String title;
    String excerpt;
    @Column(columnDeFinition="TEXT")
    String content;
    String author;
    
    @ManyToMany(cascade = {CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})
    List<Tag> tags;
  

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

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    int id;
    String name;
     
    @ManyToMany(mappedBy = "tags",cascade = {CascadeType.MERGE,CascadeType.REFRESH})
    List<Post> posts;

现在我想获取所有表格中与搜索关键字匹配的所有帖子,搜索关键字与标题、帖子中的内容标签中的名称相匹配。我可以通过查询在帖子表中获得匹配项

@Query(value = "SELECT post FROM Post post WHERE  post.title LIKE %?1% " +
            "OR post.content")
    List<Post> findAll(String keyword);

但我无法找到任何方法在同一查询中的标签表中按名称获取匹配项。

我的帖子存储库...

@Repository
@Transactional
public interface PostRepository extends JpaRepository<Post,Integer> {

    @Query(value = "SELECT post FROM Post post WHERE  post.title LIKE %?1% " +
            "OR post.content LIKE %?1%")
    List<Post> findAll(String keyword);
}

标签库...

@Repository
@Transactional
public interface TagRepository extends JpaRepository<Tag,Integer> {
        
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。