java.lang.IllegalArgumentException : invalid ObjectId [0]

标签 java bson

当我尝试在我的一个类中执行类似于下面的代码时,我收到 java.lang.IllegalArgumentException: invalid ObjectId [0]。

    String s = "0_abc";
--------
private ObjectId obj; [Instance variable]
public NewClass(String s){
    String[] sarray = s.split("_");
    obj = new ObjectId(sarray[0]);
}

失败的可能原因是什么?

最佳答案

我假设 ObjectId 类是 (org.bson.types.ObjectId) 并且它在 MongoDB Java 驱动程序中使用。 此异常意味着“0”不能作为 ObjectId 构造的值传递。

并非每个字符串都是正确的 ObjectId 值。当使用给定字符串初始化 ObjectId 时,验证完成。例如,ObjectId 要求字符串具有 24 个字符。还有更多限制可以找到完整的验证源码in GitHub repo ,在 isValid() 方法中。

如果您想创建具有正确值的 ObjectId 对象,您可以使用可用的工厂方法来创建它,如下所示:

ObjectId obj = ObjectId.get()

这将使用自动生成的值创建 ObjectId。

关于java.lang.IllegalArgumentException : invalid ObjectId [0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16766502/

相关文章:

node.js - mongodb、node.js 和加密数据

java - 当我的第一个方法参数是String类型时,如何使用Powermock的Whitebox.invokeMethod(Object instance, Object...arguments)?

java - 使用 Apache Ant 时部署的 jar 找不到主类

java - 缺少返回语句而不抛出新的 IllegalArgumentException

ruby-on-rails - bson_ext gem 在 macOS 上安装失败

json - Haskell - 将 BSON 映射到 JSON 的正确方法 - 将代码放在哪里

java - 即使将库添加到 hadoop 文件夹后也找不到 BSONFileInputFormat

database - Golang bson.E 未由包 bson 声明

java - Modbus4J Modbus RTU 主机

java - 扩展 JSP 标签库