In my Spring Boot app I have Entity like that:
@Entity
@Table(name = "UserENT")
public class User implements Serializable {
@Id
private String id;
private Data data;
...
You can implement a javax.persistence.AttributeConverter
, as 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);
}
}
}
You can then use it by annotating your field:
@Convert(converter = DataJsonConverter.class)
private Data data;