java - 使用 IgnoreCase 进行 Spring Data MongoDB 查询时来自 MongoQueryCreator 的 NullPointerException

标签 java spring mongodb spring-data-mongodb

我使用 spring-boot-starter-data-mongodb here 从 Spring Data MongoDB 查询创建了 NullPointerException 的演示.

在使用 IgnoreCase 的 MongoRepository 上调用 spring jpa 方法并传入 null 时,会引发 NPE。从链接代码中:

repository.findByFirstNameIgnoreCase(null);

将抛出 NullPointerException,其中

repository.findByFirstName(null);

返回空。

那么,在使用无法(轻松)保证非空参数的 MongoRepository 时,如何进行不区分大小写的搜索?

额外的问题,如果这不是设计使然,我该如何帮助解决这个问题?我可以在 Spring JIRA 上提出这个问题吗?

编辑:已确认问题,ticket being worked on

最佳答案

PR fixing the issue in Spring Data MongoDB merged

解决方法可能是

repository.findByFirstNameIgnoreCase(nonNull(arg) ? arg : "");

在修复发布之前防止 null 情况。

关于java - 使用 IgnoreCase 进行 Spring Data MongoDB 查询时来自 MongoQueryCreator 的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42076003/

相关文章:

java - 如何将一个整数字符串放入一个整数数组中?

hibernate - Spring MVC 表单 :select Tag, 多选未正确绑定(bind)?

mongodb - QGIS MongoDB 插件

node.js - 不在特定时间段内聚合数据

mongodb - 只用 Mongodb 和 Golang 返回查找的文档

c# - 纯抽象类和接口(interface)之间的区别

java - 套接字编程序列化对象

java - Http 请求在 java 中不起作用(在 Android 应用程序上)

java - 如何创建安全的 vaadin 14 登录表单?

spring - 为什么我的 Spring oauth 服务器总是返回相同的访问 token ?