ObjectIdSerializer siempre escribe la propiedad asignada con @ObjectId a una nueva instancia de ObjectId. Esto es incorrecto cuando asigna esta propiedad a una cadena.
Para evitar este comportamiento, escribí un NoObjectIdSerializer:
public class NoObjectIdSerializer extends JsonSerializer<String> {
@Override
public void serialize(String value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeString(value);
}
}
usado así:
@ObjectId
@JsonSerialize(using = NoObjectIdSerializer.class)
protected final String _id;
Hay un problema abierto.