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

Exception in thread "main" java.lang.IllegalArgumentException: invalid ObjectId [7887978]

我真的面临使用 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>

文档说:

IllegalArgumentException - if the string is not a valid id

所以可能 "7887978" 不是有效的 ID

From the Bson API doc it is clear that ObjectId(String hexString) Constructs a new instance from a valid 24-byte hexadecimal string representation.

这里的要点是 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();

希望对您有所帮助!