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

我只是一个虾纸丫 提交于 2019-12-24 12:51:21

问题


I am really facing challenge in changing String object to ObjectId using BSON API. The error I am facing:

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)

The simple code below for reference:

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);
    }
}

How we can solve this error. Any pointers ?

Edit: Maven dependency that I used:

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

回答1:


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

Point here is the string has to be a valid 24-byte hexadecimal value. The value 7887978 is invalid. You could either modify the code as below:

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

or use the in build static API get() to create a new object id..

ObjectId objectId = ObjectId.get();

Hope it helps you!




回答2:


docs say :

IllegalArgumentException - if the string is not a valid id

so perhaps "7887978" is not a valid id



来源:https://stackoverflow.com/questions/33888944/exception-in-thread-main-java-lang-illegalargumentexception-invalid-objectid

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!