-1

我正在尝试通过 Vavr 的 Option 值进行 mongo 查询(使用 Spring Data)来搜索记录。我有值选项 userId,我想知道是否可以通过此参数在数据库中搜索。

我在 MongoDB 和 Spring 文档中搜索过,但这些都不是关于 Vavr 类型的任何东西,例如 Option。此查询均无效。

Option<Result> FindFirstByUserIdAndCreationDateDesc(String userId);

Option<Result> FindFirstByOptionUserIdAndCreationDateDesc(String userId);

其中 userId 是 Vavr 选项

Option<String> userId;
4

1 回答 1

1

VavrOption和 JavaOptional是消除null值的类型。

数据库不使用可选值,它们使用null值,因此将值展开为null.

userId.getOrElse(null)

但是,请注意,在例如 SQL 数据库中,该null值与自身比较不相等,因此如果参数为,则 aWHERE userId = ?将不返回任何内容。要查找具有值的记录,SQL 必须是,因此除非您的方法知道这一点并考虑到这一点,否则代码仍然无法为您工作。?nullnullWHERE userId IS NULLFindXxx

于 2019-05-26T23:07:30.043 回答