gpt4 book ai didi

java - 使用 querydsl 按 null 搜索

转载 作者:行者123 更新时间:2023-11-30 10:46:07 26 4
gpt4 key购买 nike

我有一个像这样搜索的 Controller 方法

@RequestMapping(method = RequestMethod.GET)
public Page<MyEntity> find(@QuerydslPredicate(root = MyEntity.class)
Predicate predicate,
Pageable pageable) {

return this.myEntityRepository.findAll(predicate, pageable);
}

效果很好。我可以发出带有各种查询字符串参数的 GET 请求,它会相应地进行过滤,但现在我想按 null 进行搜索。我尝试执行类似 /myentity?myParam1=& 的操作,但 predicate 参数始终为 null

如何搜索特定字段为空的位置?

最佳答案

没有办法通过像 myParam1=null 这样的空参数来搜索实体,因为它会抛出 NullPointerException。我遇到了同样的问题,这是我让它工作的唯一方法。


@RequestMapping(method = RequestMethod.GET)
public Page find(@QuerydslPredicate(root = MyEntity.class) Predicate predicate, Pageable pageable, @RequestParam MultiValueMap parameters) {

Page entities = myEntityRepository.findAll(predicate, pageable);
if(parameters.get("myParam1") != null &&
parameters.get("myParam1").get(0) != null &&
parameters.get("myParam1").get(0).isEmpty()) {

QEntity entity = QEntity.entity;
BooleanExpression myParam1IsNull = entity.in(entities.getContent()).and(entities.myParam1.isNull());
entities = myEntityRepository.findAll(myParam1IsNull, pageable);
}

return entities;
}

它对数据库执行了两次查询,但它解决了问题。希望对您有所帮助。

关于java - 使用 querydsl 按 null 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36727681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com