У меня есть микросервис Spring Boot, работающий с Eureka, Spring Gateway и Feign Clients, чтобы общаться друг с другом. Также у меня есть микросервис, который использует Spring Data JPA + Querydsl для легкого поиска / фильтрации ресурсов.
Мне нужно использовать эту конечную точку из другого микросервиса. Итак, у меня есть что-то вроде этого.
Микросервис A с контроллером:
@GetMapping
public ResponseEntity<Page<MyResourceDto>> findMyResource(
@QuerydslPredicate(root = MyResource.class) Predicate predicate, Pageable
pageable,
@RequestParam(required = false) boolean isPaged) { ... }
Микросервис B со следующим фальшивым клиентом:
@FeignClient(contextId = "myResourceClientService", name = "microservicea")
@RequestMapping("${microservicea.context-path:}/myResource")
public interface MyResourceClientService{
@GetMapping
public PageImpl<MyResourceDto> findMyResource(
@QuerydslPredicate(root = MyResource.class) Predicate predicate, @RequestParam(name =
"isPaged", required = false) boolean isPaged,
@RequestParam(name = "page", required = false) int page,
@RequestParam(name = "size", required = false) int size);
}
Но когда я запускаю В приведенном выше коде возникает следующее исключение:
org.codehaus.jackson.map.JsonMappingException: Direct self-reference leading to cycle (through reference chain: com.querydsl.core.types.dsl.BooleanOperation["args"]->com.google.common.collect.RegularImmutableList[0]->com.querydsl.core.types.PathImpl["metadata"]->com.querydsl.core.types.PathMetadata["parent"]->co.com.coomeva.mimutualreclamaciones.modelo.QMyResource["id"]->com.querydsl.core.types.dsl.StringPath["root"]->com.querydsl.core.types.PathImpl["root"])
Есть ли способ правильно отправить предикат через другое приложение Java?