线程“ main”中的异常java.lang.IllegalArgumentException:无效的ObjectId [7887978] [英] Exception in thread "main" java.lang.IllegalArgumentException: invalid ObjectId [7887978]
问题描述
使用BSON API将String对象更改为ObjectId时,我确实面临挑战。我面临的错误:
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)
下面的简单代码参考:
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 ?
编辑:我使用的Maven依赖项:
Maven dependency that I used:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>2.3</version>
</dependency>
推荐答案
来自 Bson API文档很明显,
ObjectId(String
从有效的
hexString)24字节
表示构造新实例。
十六进制字符串
From the Bson API doc it is clear that
ObjectId(String hexString)
Constructs a new instance from a valid24-byte hexadecimal string
representation.
这里的字符串
必须是有效的 24字节
十六进制
值。
7887978
的值无效。您可以修改以下代码:
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");
}
或使用内置静态API get()
创建一个新的对象ID。
or use the in build static API get()
to create a new object id..
ObjectId objectId = ObjectId.get();
希望对您有所帮助!
这篇关于线程“ main”中的异常java.lang.IllegalArgumentException:无效的ObjectId [7887978]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!