Java / Преобразование из Observable <List <String>> в List <String>

У меня есть результат из SQL-запроса

Builder object_key = db.select(String.format("select object_key from "
+ CAMPAIGN_TABLE));

который возвращает тип данных Builder. Мне нужно сохранить вывод SQL-запроса в List<String> object_key_list. Я не знаю, как это сделать. Может ли кто-нибудь помочь мне с этим?

  1. Если я позвоню

    object_key.autoMap (String.class);

тогда это возвращает тип данных Observable<String>.

  1. Если я позвоню

    object_key.autoMap (String.class) .toList ();

тогда это возвращает тип данных Observable<List<String>>.

  1. Если я позвоню

    объект_key.autoMap (String.class) .toList (). toBlocking ();

тогда это возвращает тип данных BlockingObservable<List<String>>.

  1. Если я позвоню

    объект_ключ.autoMap (String.class) .toList (). toSingle ();

тогда это возвращает тип данных Single<List<String>>.

Как можно получить значение List<String> для object_key_list в качестве возвращаемого типа данных?

Кстати, что в первую очередь сбивает с толку Observable как возвращаемый тип данных?

Я могу конвертировать из Builder в List<String> с помощью object_key.getAs(String.class).toList().toBlocking().single(‌​);.

V. Raman 07.12.2018 09:53

В то время как другой тип ошибки, а именно что-то вроде: 2018-12-07 15:14:14.540::[ERROR]::[vert.x-eventloop-thread-0]::RequestH‌​andlerVerticleImpl::‌​getDynamicAdResponse failed : constructor with number of parameters=22 not found in class com.samsung.dsp.models.CampaignData, который возникает, когда количество столбцов, выбранных из базы данных, не совпадает с количеством столбцов, переданных внутри чего-либо, в функцию конструктора класса CampaignData в этих различных случаях в любом случае .

V. Raman 07.12.2018 10:56

Или что это происходит, когда данные устройства, доступные в базе данных, не совпадают со значениями устройства, которые передаются в рамках чего бы то ни было в различные функции проекта в других доступных случаях, другими словами.

V. Raman 07.12.2018 10:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
356
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо подписаться на наблюдаемое, например:

Observable<List<String>> o = Observable.empty();
// ....
o.subscribe(strings -> {
  // strings is list you are looking for
});

После подписки всякий раз, когда вы получаете результат от своей базы данных, вы будете уведомлены, и вы сможете что-то сделать со своим списком строк. Надеюсь, это поможет.

В чем разница между object_key.getAs(String.class).toList().toBlocking().single(‌​); и object_key.autoMap(String.class).toList().toBlocking().singl‌​e();? Кажется, что первое утверждение все-таки у меня работает достаточно хорошо, а второе утверждение у меня совсем не работает?

V. Raman 07.12.2018 09:56

Я не так хорошо знаком с rxjdbc (я думаю), но в чем проблема со вторым утверждением, не могли бы вы рассказать об этом?

tmucha 07.12.2018 10:21

Я не уверен в этом, но я получаю InvocationTargetException, пойманный в функции run() класса ReflectiveCallable. Я получаю следующее сообщение об ошибке: java.lang.RuntimeException: problem with parameters=java.lang.String=1536129293665-empty_test_file_ap‌​k.txt, rs types=apk_s3_objectkey=java.lang.String. Be sure not to use primitives in a constructor when calling autoMap().

V. Raman 07.12.2018 10:55

Другими словами, эта ошибка обычно возникает, когда некоторые поля даты в базе данных имеют значение NULL или типы данных атрибутов, переданных в функции, не совпадают с типами данных, которые присутствуют и доступны в базе данных.

V. Raman 07.12.2018 10:55

Было бы полезно посмотреть на код: github.com/davidmoten/rxjava-jdbc. Найдите класс Util, который вызывает это исключение. исключение связано с вызовом конструктора String для неправильных параметров.

tmucha 07.12.2018 13:35

Другие вопросы по теме