У меня есть результат из SQL-запроса
Builder object_key = db.select(String.format("select object_key from "
+ CAMPAIGN_TABLE));
который возвращает тип данных Builder. Мне нужно сохранить вывод SQL-запроса в List<String> object_key_list. Я не знаю, как это сделать. Может ли кто-нибудь помочь мне с этим?
Если я позвоню
object_key.autoMap (String.class);
тогда это возвращает тип данных Observable<String>.
Если я позвоню
object_key.autoMap (String.class) .toList ();
тогда это возвращает тип данных Observable<List<String>>.
Если я позвоню
объект_key.autoMap (String.class) .toList (). toBlocking ();
тогда это возвращает тип данных BlockingObservable<List<String>>.
Если я позвоню
объект_ключ.autoMap (String.class) .toList (). toSingle ();
тогда это возвращает тип данных Single<List<String>>.
Как можно получить значение List<String> для object_key_list в качестве возвращаемого типа данных?
Кстати, что в первую очередь сбивает с толку Observable как возвращаемый тип данных?
В то время как другой тип ошибки, а именно что-то вроде: 2018-12-07 15:14:14.540::[ERROR]::[vert.x-eventloop-thread-0]::RequestHandlerVerticleImpl::getDynamicAdResponse failed : constructor with number of parameters=22 not found in class com.samsung.dsp.models.CampaignData, который возникает, когда количество столбцов, выбранных из базы данных, не совпадает с количеством столбцов, переданных внутри чего-либо, в функцию конструктора класса CampaignData в этих различных случаях в любом случае .
Или что это происходит, когда данные устройства, доступные в базе данных, не совпадают со значениями устройства, которые передаются в рамках чего бы то ни было в различные функции проекта в других доступных случаях, другими словами.




Вам необходимо подписаться на наблюдаемое, например:
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().single();? Кажется, что первое утверждение все-таки у меня работает достаточно хорошо, а второе утверждение у меня совсем не работает?
Я не так хорошо знаком с rxjdbc (я думаю), но в чем проблема со вторым утверждением, не могли бы вы рассказать об этом?
Я не уверен в этом, но я получаю InvocationTargetException, пойманный в функции run() класса ReflectiveCallable. Я получаю следующее сообщение об ошибке: java.lang.RuntimeException: problem with parameters=java.lang.String=1536129293665-empty_test_file_apk.txt, rs types=apk_s3_objectkey=java.lang.String. Be sure not to use primitives in a constructor when calling autoMap().
Другими словами, эта ошибка обычно возникает, когда некоторые поля даты в базе данных имеют значение NULL или типы данных атрибутов, переданных в функции, не совпадают с типами данных, которые присутствуют и доступны в базе данных.
Было бы полезно посмотреть на код: github.com/davidmoten/rxjava-jdbc. Найдите класс Util, который вызывает это исключение. исключение связано с вызовом конструктора String для неправильных параметров.
Я могу конвертировать из
BuilderвList<String>с помощьюobject_key.getAs(String.class).toList().toBlocking().single();.