PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

È possibile scrivere un convertitore di tipo di dati per gestire le colonne JSON di postgres?

Sì, lo è, ma devi utilizzare l'API specifica di Postgres. Nel codice sopra è necessario sostituire i metodi from/to con i seguenti:

@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);
    }
}