Spring ReactiveCrudRepository ExistsQuery方法返回null

时间:2018-07-10 17:15:06

标签: java spring-data spring-data-mongodb

有什么主意,为什么下面的代码会返回null的单声道?我知道合同为什么会允许它,但是我希望Spring代码返回true或false。

public interface SampleRepository extends ReactiveCrudRepository<Sample, String> {
    @ExistsQuery("{ userId: ?0 }")
    Mono<Boolean> existsWithUserId(String userId);

    @Query("{ userId: ?0 }")
    Mono<Sample> findWithUserId(String userId);
}

3 个答案:

答案 0 :(得分:0)

您可以将Mono<Boolean>更改为boolean,它将仅返回true或false

public interface SampleRepository extends ReactiveCrudRepository<Sample, String> {
    @ExistsQuery("{ userId: ?0 }")
    boolean existsWithUserId(String userId);

    @Query("{ userId: ?0 }")
    boolean findWithUserId(String userId);
}

答案 1 :(得分:0)

也许这是先前版本中的错误。使用Spring Boot 2.0.5(Spring 5.0.9,Spring Data 2.0.10)和反应性mongo驱动程序3.8.2,它对我来说很好-永远不会返回null。

请注意,我明确使用较新的mongo-driver-async 3.8.2而不是当前的默认版本,因为在后者中包含另一个错误,该错误已在较新版本中修复。

答案 2 :(得分:0)

如果存储库找不到该条目,它将返回一个Mono