2017-06-21 1 views
1

In meinem Frühling Boot-App Speichern Ich habe Entity wie folgt aus:Frühlings-Boot-PPV: entity als JSON

@Entity 
@Table(name = "UserENT") 
public class User implements Serializable { 

    @Id 
    private String id; 

    private Data data; 
    ... 

Ich möchte, dass Objektdaten erreichen, wird im DB im JSON-Format gespeichert werden. Aber es wird auf Datenobjekt abgebildet, wenn aus DB ausgewählt wird.

Vielen Dank für jeden Hinweis.

Antwort

3

Sie können eine javax.persistence.AttributeConverter implementieren, wie in:

public class DataJsonConverter implements AttributeConverter<Data, String> { 

    private ObjectMapper objectMapper = ...; 

    @Override 
    public String convertToDatabaseColumn(Data data) { 
     try { 
      return objectMapper.writeValueAsString(data); 
     } catch (JsonProcessingException e) { 
      throw new RuntimeException("Could not convert to Json", e); 
     } 
    } 

    @Override 
    public Data convertToEntityAttribute(String json) { 
     try { 
      return objectMapper.readValue(json, Data.class); 
     } catch (IOException e) { 
      throw new RuntimeException("Could not convert from Json", e); 
     } 
    } 
} 

Sie dann von Anmerkungen versehen Feld verwenden können:

@Convert(converter = DataJsonConverter.class) 
private Data data;