sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo almacenar el campo Fecha como ISODate () usando jackson en MongoDb

Lo que necesita es el Módulo Jackson Joda. Si importa eso en su classpath, puede hacer lo siguiente en su mapeador para escribirlo como su marca de tiempo deseada:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
mapper.writeValueAsString(date);

Puede reemplazar date en el ejemplo de código anterior con su POJO según sea necesario.

Editar:parece que lo que realmente quieres es un serializador personalizado. Eso sería algo como esto:

public class IsoDateSerializer extends JsonSerializer<DateTime> {
    @Override
    public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider) {
        String isoDate = ISODateTimeFormat.dateTime().print(value);
        jgen.writeRaw("ISODATE(\"" + isoDate + "\")");
    }

Luego, lo registrará en el mapeador para todos los tipos de DateTime

mapper.addSerializer(DateTime.class, new IsoDateSerializer());

o especifíquelo en la función usando anotaciones

@JsonSerializer(using = IsoDateSerializer.class)
public DateTime createdTime;