我需要向我的所有Spring Data REST存储库添加一个查询端点。
/api/users/query?query=...
/api/issues/query?query=...
/api/projects/query?query=...
...
或
/api/users/search/query?query=...
/api/issues/search/query?query=...
/api/projects/search/query?query=...
...
URL格式无关紧要。
我实现了一个自定义的基本存储库:
第一个
请确保Spring Data REST不会公开findAllByQuery
方法:
我可以为每个实体类型实现一个控制器,并公开这样一个方法:
@RepositoryRestController
public class UserController {
private final UserRepository userRepository;
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@GetMapping(path = "/users/search/query")
public ResponseEntity<CollectionModel<PersistentEntityResource>> findAllByQuery(
String query,
Pageable pageable,
PagedResourcesAssembler<Object> pagedAssembler,
PersistentEntityResourceAssembler resourceAssembler) {
return ResponseEntity.ok(pagedAssembler.toModel(
userRepository.findAllByQuery(value, pageable).map(Object.class::cast),
resourceAssembler));
}
}
但是,是否有可能将此方法一次性添加到所有实体中,而无需创建多个相同的控制器?
1条答案
按热度按时间voj3qocg1#
以下是我的工作: