使用Option <t>作为参数创建查询

时间:2019-05-26 22:05:39

标签: java mongodb spring-data vavr

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

我已经在MongoDB和Spring文档中提供服务,但是这些都不是关于Option之类的Vavr类型的。此查询均无效。

Option<Result> FindFirstByUserIdAndCreationDateDesc(String userId);

Option<Result> FindFirstByOptionUserIdAndCreationDateDesc(String userId);

其中userId是Vavr选项

Option<String> userId;

1 个答案:

答案 0 :(得分:1)

Vavr的Option和Java的Optional是用于消除null值的类型。

数据库不使用可选值,它们使用null值,因此将值解包为null

userId.getOrElse(null)

不过,请注意,例如在SQL数据库中,null的值与其自身不相等,因此如果WHERE userId = ?参数为?,则null将不返回任何内容。要查找具有null值的记录,SQL必须为WHERE userId IS NULL,因此,除非您的FindXxx方法知道这一点并加以说明,否则代码仍然对您不起作用。