Поддерживает ли JmixDataRepository Stream в ответ

В spring-data-jpa в методе репозитория можно возвращать Stream в ответ, в документации написано, что в Hibernate используется ScrollableResultSet, а в EclipseLink используется ScrollableCursor для считывания из базу, что в итоге позволяет экономить память и не выгружать большой объём данных в память Java.
В Jmix используется EclipseLink, но насколько я понял есть своя реализация интерфейса Repository - JmixDataRepository.
Подскажите, будет ли поддержка ScrollableCursor в Jmix из коробки если мой метод возвращает Stream?

Спасибо.

1 симпатия

JmixDataRepository работает через DataManager, что позволяет поддержать все возможности фреймворка: контроль доступа к данным, lazy loading ссылок, fetch plans и пр. Но отдавать Stream он не умеет, так что и в репозитории это невозможно.

Хм, умеет :slight_smile:
Я помню мы пытались подружить Optional, но он его как раз не умел и мы пошли через Stream и код ниже 100% работает.

public interface AccountRepository extends JmixDataRepository<Account, UUID> {
    default Optional<Account> findByExternalId(Long externalId) {
        return findAllByExternalId(externalId).findFirst();
    }

    Stream<Account> findAllByExternalId(Long externalId);
}
1 симпатия

Я не совсем корректно выразился.
Получение Stream из JmixDataRepository вам просто ничего не даст в плане ленивой подгрузки - DataManager вернет полностью загруженный List, и из него будет сделан Stream.