gpt4 book ai didi

spring-data-jpa - 使用 Swagger 记录 QueryDSL 端点

转载 作者:行者123 更新时间:2023-12-03 17:31:31 25 4
gpt4 key购买 nike

我正在使用 Spring Boot Data、QueryDSL 和 Swagger。
我已经定义了这样的端点:

@GetMapping
public ResponseEntity<?> listOfThings(
@PageableDefault(size = 20, sort = "uID", direction = Sort.Direction.DESC) final Pageable pageable,
@QuerydslPredicate(root = Thing.class) final Predicate predicate)

然而 Swagger 只定义变量:页面、大小、排序 - 它似乎没有解析实体以将所有字段显示为可过滤。

我有这样的存储库:
@Repository
public interface ThingRepository
extends JpaSpecificationExecutor<Thing>, CrudRepository<Thing, String>, PagingAndSortingRepository<Thing, String>,
QuerydslPredicateExecutor<Thing>, QuerydslBinderCustomizer<QThing>
{
@Override
default void customize(final QuerydslBindings bindings, final QThing thing)
{
bindings.bind(thing.status).first((status, value) -> status.eq(value));
bindings.bind(thing.recipient).first(StringExpression::containsIgnoreCase);
bindings.bind(String.class).first((StringPath path, String value) -> path.containsIgnoreCase(value));
}

}

我希望 Swagger 将所有字符串字段显示为过滤器,尤其是严格定义的状态和收件人。

最佳答案

定义一些虚拟参数并将所有查询参数添加为 RequestParams但不要使用它们......只使用谓词。我们使用它作为一种解决方法来支持用于代码生成的 swagger 文件。不完美,但有效!

public Iterable<SCGameInfo> findSCGameInfo(
@QuerydslPredicate(root = GameInfo.class) Predicate predicate,
@RequestParam(name= "gameName",required = false) String gameName,
@RequestParam(name= "vendor",required = false) String vendor
){
return scService.findAllGameInfosForPredicate(predicate);
}

关于spring-data-jpa - 使用 Swagger 记录 QueryDSL 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53081245/

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