У меня есть следующий запрос POST:
{
"name": "Peter",
"lastName": "Smith",
"contact": {
"phone":"12345679",
"email": "peter@smith.com"
}
}
И я хотел бы сохранить его в SQL DB следующим образом:
| id (int) | имя (варчар) | lastName (varchar) | contact (JSON) |
Я использую spring-boot-starter-data-rest
, поэтому у меня есть только сущность UserRepository
и User
, которая имеет Embedded свойство контакт
пользователь. java
@Entity
@Table(name="user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String title;
@Column(name = "lastName")
private String lastName;
@Embedded
@Column(name = "contact")
private Contact contact;
}
контакт. java
@Embeddable
public class Contact {
private String phone;
private String email;
}
UserRepository. java
public interface UserRepository extends JpaRepository<User, Integer> {
//
}
Если я сделаю POST-запрос, я получу ошибку, потому что (думаю) я не преобразую Contact
в JSON.
Я уже пытался добавить @Convert(converter = HashMapConverter.class)
, но я получаю сообщение об ошибке.
HashMapConverter
public class HashMapConverter implements AttributeConverter<Object, String> {
private static final ObjectMapper om = new ObjectMapper();
@Override
public String convertToDatabaseColumn(Object attribute) {
try {
return om.writeValueAsString(attribute);
} catch (JsonProcessingException ex) {
//log.error("Error while transforming Object to a text datatable column as json string", ex);
return null;
}
}
@Override
public Object convertToEntityAttribute(String dbData) {
try {
return om.readValue(dbData, Object.class);
} catch (IOException ex) {
//log.error("IO exception while transforming json text column in Object property", ex);
return null;
}
}
}