SpringBootJPA 多对多查询,只显示指定数据

问题描述:

场景描述

作品专辑

作品

查询专辑下面的作品

只显示已经通过审核的作品,未通过审核的作品不现实,已字段state=1或 2来表示审核是否通过

现在只能查询出全部作品,请问要如何修改才可以呢

代码如下

作品Entity表

@ManyToMany(mappedBy = "csDesignWorks")
    private List<CsAlbum> csAlbums = new ArrayList<>(  );

专辑Entity表

@JsonIgnoreProperties(value = { "csAlbums" }) //解决死循环
    @ManyToMany
    @JoinTable(
            /**
             * 关系配置 只能在关系维护表里配置
            */
            //指定表名字
            name = "cs_album_design_works",
            //配置维护放字段
            joinColumns = @JoinColumn(name = "album_id",referencedColumnName = "id"),
            //配置被维护放字段
            inverseJoinColumns = @JoinColumn(name = "design_works_id",referencedColumnName = "id")
    )
    private List<CsDesignWorks> csDesignWorks = new ArrayList<>(  );

Service查询专辑内容

@Override
    public CsAlbum viewAlbum(Long id){
        CsAlbum csAlbum = csAlbumRepository.findById( id ).get();
        csAlbum.getCsDesignWorks();
        return  csAlbum;
    }

添加作品的查询条件啊,只查审核通过的作品去跟中间关系表关联,查出对应的作品专辑

可以使用Predicate toPredicate(Root root, CriteriaQuery<?> query, CriteriaBuilder cb) 接口方法,详细demo可参考:https://blog.csdn.net/achi010/article/details/72793479

可以参考https://blog.csdn.net/VICTOR_fusheng/article/details/93361977
Repository可以额外继承QueryDslPredicateExecutor