java.lang.IllegalArgumentException:invalid ObjectId [0]

当我尝试在我的类之一中执行类似于下面的代码时,出现java.lang.IllegalArgumentException:invalid ObjectId [0]。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 obj = new ObjectId{sarray[0]};应该是:

ObjectId obj = new ObjectId(sarray[0]); 

回答:

不幸的是,你还没有发堆栈跟踪,但我认为异常是从您的ObjectId类的构造函数,不允许发送0作为参数抛出。我也认为你想说new ObjectId(sarray[0])而不是new ObjectId{sarray[0]};。否则,我真的不知道你怎么能编译这个。

回答:

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

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

如果你想创建一个正确的值,你可以利用现有的工厂方法是这样创建的对象的ObjectId:

ObjectId obj = ObjectId.get() 

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

以上是 java.lang.IllegalArgumentException:invalid ObjectId [0] 的全部内容, 来源链接: utcz.com/qa/258316.html

回到顶部