Метод SpringData Cassandara findAll возвращает только одну запись - PullRequest
1 голос
/ 20 июня 2020

Создание проекта с помощью SpringData с использованием репозитория Reactive Cassandra. У меня есть образец приложения Book, в котором я написал собственный запрос.

    @GetMapping("/books2")
    public Flux<Book2> getBooks(@Valid @RequestBody Book2 book ){

        MapId id1 = id( "id", book.getId()).with("isbn", book.getIsbn());
        if(Objects.nonNull(book.getName()))
            id1.with( "name", book.getName());
        if(Objects.nonNull(book.getLocalDate()))
            id1.with( "localDate", book.getLocalDate());


        return book2Repository.findAllById( Collections.singletonList(id1));
    }

У меня много строк, но возвращаемый результат - только одна.

Просмотр кода SimpleReactiveCassandraRepository. java,

    public Flux<T> findAllById(Iterable<ID> ids) {
        Assert.notNull(ids, "The given Iterable of ids must not be null");
        if (FindByIdQuery.hasCompositeKeys(ids)) {
            return this.findAllById((Publisher)Flux.fromIterable(ids));
        } else {
            FindByIdQuery query = FindByIdQuery.forIds(ids);
            List<Object> idCollection = query.getIdCollection();
....
....
    public Flux<T> findAllById(Publisher<ID> idStream) {
        Assert.notNull(idStream, "The given Publisher of ids must not be null");
        return Flux.from(idStream).flatMap(this::findById);
    }

findAllById, похоже, проверяет, есть ли у Query составной ключ, и вызывает findAllById, который, похоже, вызывает findById, который возвращает одну запись.

Как мне вернуть несколько строк?

Это ошибка?

Я пробовал с 2.2.7 и 3.0.1 spring-data-cassandara, и результаты кажутся такими же.

...