#java #mongodb #dropwizard #mongodb-java
#java #mongodb #волшебник падения #mongodb-java
Вопрос:
Я новичок в MongoDB и здесь немного схожу с ума. Я использую последнюю версию mongo-java-driver и dropwizard.
Я использую POJO для записи в DDBB, который работает. Однако, пытаясь получить элемент, я не получаю фактический _id. Вот что я попробовал:
Документ DDBB
{
_id:603c249cbb33487d9baa49f8,
name:"John"
}
Класс Персоны
public class Person {
@BsonProperty("_id")
@BsonId
private ObjectId id;
@NotNull
@JsonProperty
private String name;
}
ВОЗВРАТ:
{
"id": {
"timestamp": 1614554268,
"counter": 11160056,
"machineIdentifier": 12268360,
"processIdentifier": 32155,
"timeSecond": 1614554268,
"time": 1614554268000,
"date": 1614554268000
},
"name": "John"
}
Как вы можете видеть, он не возвращает фактическое _id
значение (например, 603c249cbb33487d9baa49f8). Я пытался сделать идентификатор строкой, но я получаю сообщение об ошибке Failed to decode 'Person'. Decoding '_id' errored with: readString can only be called when CurrentBSONType is STRING, not when CurrentBSONType is OBJECT_ID.
Я следовал нескольким руководствам и искал вопросы здесь, но, похоже, ничего не работает.
Любая помощь будет очень признательна!
Ответ №1:
Вам не нужно использовать @BsonId
, вы можете просто использовать @Id
и data-type
поле идентификатора должно быть String
. В этом случае вы получите 12bit
идентификатор, сгенерированный mongo.
public class Person {
@Id
private String id;
@NotNull
@JsonProperty
private String name;
}
Ответ №2:
Вы можете просто использовать @MongoId
вместо @BsonId
public class Person {
@MongoId
private String id;
@NotNull
@JsonProperty
private String name;
}