如何解决附加 QueryDSL 谓词或根据过滤器值构建谓词
我是 Querydsl 的新手,我正在寻找一种基于过滤器附加/构建谓词的方法。您可以在示例中看到,如果过滤器中的某个字段没有值,则不应进入谓词。
如果这样的事情是不可能的,那么最好的方法是什么?
例如过滤器(GetPaintingRequest)包含这些字段(过滤器中还有更多,但不重要):
public class GetPaintingsRequest {
private String author;
private Integer style;
private String paintingName;
//.....getters and setters
}
所以在服务类中我想过滤这样的绘画
public List<Painting> getFilteredPaintings(GetPaintingsRequest request) {
QPainting painting = QPainting.painting;
//predicate for all paintings that are not deleted and not sold
Predicate query = painting.deleted.isFalse().and(painting.isSold.isFalse());
if (!request.getAuthor().equals("")) {
//append to existing predicate name of the author
query.and.painting.autor.eq(request.getAuthor()); //obviously not working - just as an example what I want
}
if (!request.getPaintingName().equals("")) {
//append to existing predicate painting name
query.and.painting.paintingName.eq(request.getPaintingName()); //obviously not working - just as an example what I want
}
var paintingList = paintingRepository.findAll(query);
}
解决方法
我找到了解决方案!
#include <stdio.h>
void main() {
int i,j; //Takes i as 0 with short
printf("Enter two integers: ");
scanf("%d %d",&i,&j);
printf("\n%d & %d = %d\n",i,j,(i & j));
printf("\n%d ^ %d = %d\n",(i ^ j));
printf("\n%d | %d = %d\n",(i | j));
if ((i | j) == (i & j) + (i ^ j))
printf("\nYES\n");
else
printf("\nNO\n");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。