当我尝试在我的一个类中执行类似于下面的代码时,我收到 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/