我有两个表Pet
和POST
。
在POST
中,我在Pet
和User
表之间建立了联系。
用户可以将Pet标记为收藏,并将在POST
表中添加一个条目。
现在,我想检索登录页面上的所有宠物,但还希望获得当前用户标记为收藏的宠物的标志。
这就是我想在QueryDSL中实现的。
以下我尝试过的代码。但是代码只返回用户喜欢的宠物。但是我的要求是,对于所有标记为收藏的宠物,都应使用fav_flag
作为true
来检索所有宠物。
我只会得到该用户最喜欢的宠物。但是我希望所有的宠物都显示出来,并为喜欢的宠物设置一个标记。
JPAQuery<PetListDTO> jpaQuery = jpaQueryFactory
.select(Projections.fields(PetListDTO.class, qPet.id, qPet.petName, qPet.thumbnail.as("media"), qPet.price, qPet.owner.id.as("ownerId"), qPost.favorite.as("isFav"), qUserDetails.isCertified.as("isCertified")))
.from(qPet)
.leftJoin(qUserDetails).on(qUserDetails.user.id.eq(qPet.owner.id))
.leftJoin(qPost).on(qPost.pet.id.eq(qPet.id)).where(qPost.buyer.id.eq(browsePetRequestDTO.getUserId()))
.where(filterBrowsePetOption)
.offset(pageable.getOffset())
.limit(pageable.getPageSize());
List<PetListDTO> res = jpaQuery.fetch();
输入将为browsePetRequestDTO.getUserId() = 4
。
预期的输出是PetListDTO的列表。例如:
[{fav:true fromOtherSource:假id:77媒体:“s3.us-east-2.amazonaws.com/s3-petquest-dev/images/…” ownerId:7 petName:“测试新” petStatus:空价格:123},{fav:假fromOtherSource:假id:77媒体:“s3.us-east-2.amazonaws.com/s3-petquest-dev/images/…” ownerId:7 petName:“测试新” petStatus:空值:123}]