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