Создание проекта с помощью 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, и результаты кажутся такими же.