Как вставить объект Date с последним mongojack? - PullRequest
0 голосов
/ 20 ноября 2018

поэтому в моем объекте у меня есть private Date date;, когда я вставляю, я получил это исключение:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: JsonGenerator of type org.mongojack.internal.object.document.DocumentObjectGenerator not supported: org.mongojack.internal.DateSerializer is designed for use only with org.mongojack.internal.object.BsonObjectGenerator or org.mongojack.internal.stream.DBEncoderBsonGenerator or com.fasterxml.jackson.databind.util.TokenBuffer (through reference chain: com.test.DocumentWrapper["date"])

Я пытаюсь настроить TTL Монго, используя это поле даты.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

У меня недавно была такая же проблема: сохранять дату как объект Date в MongoDB через MongoJack. Прежде всего, я использовал версию MongoJack 2.10.0. И это требует создания собственного сериализатора и десериализатора.

public class Serializer extends JsonSerializer<DateTime> {

    @Override
    public void serialize(DateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeObject(new Date(value.getMillis()));
    }
}

public class Deserializer extends JsonDeserializer<DateTime> {

private static final DateDeserializer DATE_DESERIALIZER = new DateDeserializer();

    @Override
    public DateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
        Date date = DATE_DESERIALIZER.deserialize(p, ctxt);
        return date == null ? null : new DateTime(date);
    }
}

.....
@JsonSerialize(using = EdunavJsonDateTimeSerializer.class)
@JsonDeserialize(using = EdunavJsonDateTimeDeserializer.class)
private DateTime testDate;

public DateTime getTestDate() {
    return testDate;
}

public void setTestDate(DateTime testDate) {
    this.testDate = testDate;
}
......

В моем случае я преобразовал Date в joda DateTime, чтобы сохранить согласованность с моим кодом, но можно изменить его на другой тип (LocalDateTime, OffsetDateTime и т. Д.)

0 голосов
/ 04 декабря 2018

Чтобы решить эту проблему, пожалуйста, используйте версию 2.10.0, которая исправила эту ошибку.

...