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