проблема с mongo @query с mongorepository с использованием spring-data - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть следующие запросы:

@Query(value= "{ 'agents.agentId' : ?0 }", fields = "{ '_id' : 1, 'agents' : 1}")
Optional<List<Simple>> findOptionalByAgentsAgentIdIn(List<String> agentIdList);

@Query(value= "{ 'agents.agentId' : ?0 }", fields = "{ '_id' : 1, 'agents' : 1}")
Optional<List<Simple>> findOptionalByAgentsAgentId(String agentId);

Первый возвращает пустой массив каждый раз, а второй возвращает правильный json

@Data
public class Simple {

    String id;
    List<AppAgent> agents;
}

@Data
@AllArgsConstructor
@NoArgsConstructor
public class AppAgent {

    private String agentName;
    private String agentId; 
}

выше мой простой объект и ниже мой метод контроллера

@GetMapping(value = { "/apps/{agentIds}", "/apps/{agentId}" })
public ResponseEntity<RestResult<List<Simple>>> getAllApplicationsByAgentIds(
        @PathVariable Optional<List<String>> agentIds, @PathVariable Optional<String> agentId) {

    Optional<List<Simple>> documents = Optional.empty();

    if (agentId.isPresent()) {
        documents = appStatusService.getAllByAgentId(agentId.get());
    } else if (agentIds.isPresent()) {
        documents = appStatusService.getAllByAgentIds(agentIds.get());
    }

    ResponseEntity<RestResult<List<Simple>>> response;
    if (!documents.get().isEmpty()) {
        response = new ResponseEntity<>(RestResult.success(documents.get()), HttpStatus.OK);
    } else {
        response = new ResponseEntity<>(RestResult.<List<Simple>>noResult(), HttpStatus.NOT_FOUND);
    }

    return response;
}

Сервис просто вызывает методы репозитория. что-то не так в моем синтаксисе? Он возвращается, говоря, что никаких результатов от отдыха, как и следовало ожидать в моем предложении else

...