Mar*_*arx 5 querydsl spring-data-jpa swagger spring-data-rest springfox
我正在使用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)
Run Code Online (Sandbox Code Playgroud)
但是Swagger仅定义变量:页面,大小,排序-似乎没有解析Entity将所有字段显示为可过滤的。
我有这样的存储库:
@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));
}
Run Code Online (Sandbox Code Playgroud)
}
我希望Swagger将所有String字段显示为过滤器,尤其是严格定义的状态和收件人。
小智 0
定义一些虚拟参数并将所有查询参数添加为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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
352 次 |
最近记录: |