sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Es posible escribir un convertidor de tipo de datos para manejar columnas JSON de postgres?

Sí, lo es, pero debe usar la API específica de Postgres. En el código anterior, debe reemplazar los métodos from/to con lo siguiente:

@Override
public ObjectNode from(Object databaseObject) {
    if (databaseObject == null) { return null; }
    try {
        PGobject dbo = (PGobject) databaseObject;
        return mapper.readValue(dbo.getValue(), ObjectNode.class);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

@Override
public Object to(ObjectNode userObject) {
    if (userObject == null) { return null; }
    try {
        PGobject dbo = new PGobject();
        dbo.setType("json");
        dbo.setValue(mapper.writeValueAsString(userObject));
        return dbo;
    } catch (JsonProcessingException|SQLException e) {
        throw new RuntimeException(e);
    }
}