DevelopmentException: DataManager cannot execute query for single attributes

Добрый день!
В репозиторном слое у меня есть следующий метод, который получает список UUID сущности TrafficPolicy

public interface TrafficPolicyRepository extends JmixDataRepository<TrafficPolicy, UUID> {

    @Query("select e.policyId from TrafficPolicy e where e.refTraffic.id = :id")
    List<UUID> findPolicyIdsByRefTraffic(@Param("id") UUID id, Pageable pageable);
}

Но при попытке получить список UUID я получаю ошибку:

DevelopmentException: DataManager cannot execute query for single attributes

Пока у меня не получилось решить данную проблему. Подскажите, как ее решить?

Здравствуйте, Александр!

В настоящий момент Jmix Data Repository не поддерживают загрузку отдельных значений.
Создал issue на добавление этой функциональности.

Пока для этих целей можно воспользоваться DataManager-ом. Можно прямо в репозитории через getDataManager() примерно так:

public interface TrafficPolicyRepository extends JmixDataRepository<TrafficPolicy, UUID> {

    //...

    default List<UUID> findPolicyIdsByRefTraffic(UUID id, Pageable pageable) {
        List<KeyValueEntity> kvs = getDataManager()
                .loadValues("select e.policyId from TrafficPolicy e where e.refTraffic.id = :id")
                .parameter("id", id)
                .properties("policyId")
                .firstResult(/*compute from pageable*/)
                .maxResults(/*compute from pageable*/)
                .list();
        return kvs.stream().map(kvs -> (UUID) kvs.getValue("policyId")).toList();
    }
}

С уважением,
Дмитрий

Дмитрий, спасибо)
Но к getDataManager не могу обратиться, появляется ошибка
Cannot resolve method 'getDataManager' in 'TrafficPolicyRepository'

getDataManager() появился в Jmix 2.2: Expose dataManager through a getDataManager method · Issue #2523 · jmix-framework/jmix · GitHub

Если вы используете более раннюю версию, то можно добавить реализацию репозитория, заинжектить в нее DataManager и использовать его