Создание запроса с параметром <T>в качестве параметра - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь сделать запрос монго (используя Spring Data) для поиска записи по значению Option из Vavr. У меня есть значение Option userId, и мне интересно, можно ли выполнить поиск в базе данных по этому параметру.

Я работал с документацией MongoDB и Spring, но ни в одном из них нет ничего общего с типом Vavr, таким как Option. Ни один из этих запросов не работает.

Option<Result> FindFirstByUserIdAndCreationDateDesc(String userId);

Option<Result> FindFirstByOptionUserIdAndCreationDateDesc(String userId);

где userId - это опция Vavr

Option<String> userId;

1 Ответ

1 голос
/ 27 мая 2019

Vavr Option и Java Optional являются типами для исключения значения null.

База данных не использует необязательные значения, они используют null значения, поэтомуразверните значение в null.

userId.getOrElse(null)

Однако имейте в виду, что, например, в базах данных SQL значение null не равно самому себе, поэтому WHERE userId = ? ничего не вернет, если? аргумент null.Чтобы найти записи со значением null, SQL должен быть WHERE userId IS NULL, поэтому, если ваши методы FindXxx не знают об этом и не учитывают его, код все равно не будет работать для вас.

...