Переименуйте ObjectId _id в id при десериализации Джексона с помощью Jongo и MongoDB.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Переименуйте ObjectId _id в id при десериализации Джексона с помощью Jongo и MongoDB.

Сообщение Anonymous »

Я только начал работать над проектом, используя игровой фреймворк jongo и MongoDB. Первоначально проект был написан в Play 2.1 с pojos с полем String id, аннотированным обоими: @Id и @ObjectId. Это будет сохраняться в Mongo как ObjectId, а при десериализации выводить идентификатор как: «id»: «53fcb9ede4b0b18314098d10», например .

После обновления до Jongo 1.1 и Play 2.3.3 атрибут id всегда имеет имя «_id» при десериализации, я хочу, чтобы атрибут сохранял имя поля, но я могу это сделать. Не используйте @JsonProperty("custom_name"), поскольку аннотация Jongo @Id делает @JsonProperty("_id") скрыто.

Код: Выделить всё

import org.jongo.marshall.jackson.oid.Id;
import org.jongo.marshall.jackson.oid.ObjectId;

public class PretendPojo {

@Id
@ObjectId
private String id;

private String name;

public PretendPojo() {
}

public PretendPojo(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}
}
POJO, сохраненные в MongoDB, выглядят так, если я просматриваю их через RoboMongo

Код: Выделить всё

{
"_id" : ObjectId("53fc984de4b0c34f1905b8ee"),
"name" : "Owen"
}
Однако, когда я их десериализую, я получаю следующий json, если сохраняю обе аннотации:

Код: Выделить всё

{"name":"Owen","_id":{"time":1409072858000,"date":1409072858000,"timestamp":1409072858,"new":false,"timeSecond":1409072858,"inc":308487737,"machine":-458223042}}
и следующий вывод, если я использую только аннотацию @Id.

Код: Выделить всё

{"name":"Owen","_id":"53fcbedae4b0123e12632639"}
У меня есть тестовый пример для работы с показанным выше шоу PretendPojo:

Код: Выделить всё

   @Test
public void testJongoIdDeserialization() throws UnknownHostException {
DB database = new MongoClient("localhost", 27017).getDB("jongo");
Jongo jongo = new Jongo(database);
MongoCollection collection = jongo.getCollection("jongo");
collection.save(new PretendPojo("Owen"));
PretendPojo pretendPojo = collection.findOne("{name:   \"Owen\"}").as(PretendPojo.class);
JsonNode json = Json.toJson(pretendPojo);
assertNotNull(json.get("id"));
}
При попытке использовать пользовательские десериализаторы я никогда не могу получить идентификатор объекта. Кажется, у меня есть доступ только к данным даты/времени/временной метки, которые в данный момент десериализуются.

В идеале результат, который я ищу, будет:

Код: Выделить всё

  {"name":"Owen","id":"53fcbedae4b0123e12632639"}
Любая помощь будет принята с благодарностью! :)


Подробнее здесь: https://stackoverflow.com/questions/255 ... nd-mongodb
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Spring data mongodb создает ObjectId при сохранении и String _id при обновлении.
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как получить ObjectId вставленного документа в реактивной Java MongoDB?
    Anonymous » » в форуме JAVA
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Невозможно десериализовать строку из BsonType ObjectId в MongoDb C#
    Anonymous » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Использовать ObjectId.GenerateNewId() или оставить MongoDB для его создания?
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Fastapi автоматически сериализует ObjectId из mongodb
    Anonymous » » в форуме Python
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»