线程“main”中的异常java.lang.IllegalArgumentException:无效的ObjectId [7887978]

时间:2015-11-24 08:42:10

标签: java bson

我真的面临使用BSON API将String对象更改为ObjectId的挑战。我面临的错误:

Exception in thread "main" java.lang.IllegalArgumentException: invalid ObjectId [7887978]
    at org.bson.types.ObjectId.<init>(ObjectId.java:130)
    at org.bson.types.ObjectId.<init>(ObjectId.java:124)
    at com.sample.common.Main.main(Main.java:8)

以下简单代码供参考:

import org.bson.types.ObjectId;

public class Main {
    public static void main(String[] args) {
        String number = "7887978";
        ObjectId id = new ObjectId(number);
        System.out.println(id);
    }
}

我们如何解决此错误。有什么指针吗?

编辑:我使用的Maven依赖:

<dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>bson</artifactId>
            <version>2.3</version>
        </dependency>

2 个答案:

答案 0 :(得分:2)

  

Bson API doc可以清楚地看到ObjectId(String hexString)从有效的24-byte hexadecimal string表示构造一个新实例。

此处指出string必须是有效的24-byte hexadecimal值。 值7887978无效。您可以修改代码如下:

String id = "666f6f2d6261722d71757578";
        if (ObjectId.isValid(id)) {
            ObjectId objectId = new ObjectId(id);
            System.out.println(objectId);
        } else {
            System.out.println("Invalid id");
        }

或使用in build static API get()创建新的对象ID ..

ObjectId objectId = ObjectId.get();

希望它可以帮到你!

答案 1 :(得分:0)

文档说:

  

IllegalArgumentException - 如果字符串不是有效的id

所以也许"7887978"不是有效的身份