public class LanguageValue {
private String value;
private String locale;
public LanguageValue() {
}
public LanguageValue(String value, String locale) {
this.value = value;
this.locale = locale;
}
... getter, setter
}
@Entity
public class Human {
@Id @GeneratedValue
private long id;
@Convert(converter = LanguageConverter.class)
private LanguageValue name;
public Human() {
}
public Human(LanguageValue name) {
this.name = name;
}
}
public interface HumanRepository extends JpaRepository<Human, Long> {
}
public class LanguageConverter implements AttributeConverter<LanguageValue, String> {
private static final ObjectMapper objectMapper = new ObjectMapper();
@Override
public String convertToDatabaseColumn(LanguageValue attribute) {
try {
return objectMapper.writeValueAsString(attribute);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
@Override
public LanguageValue convertToEntityAttribute(String dbData) {
try {
return objectMapper.readValue(dbData, LanguageValue.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
}

@Entity
public class Human {
@Id @GeneratedValue
private long id;
@Convert(converter = LanguageConverter.class)
private List<LanguageValue> name;
public Human() {
}
public Human(List<LanguageValue> name) {
this.name = name;
}
}
public class LanguageConverter implements AttributeConverter<List<LanguageValue>, String> {
private static final ObjectMapper objectMapper = new ObjectMapper();
@Override
public String convertToDatabaseColumn(List<LanguageValue> attribute) {
try {
return objectMapper.writeValueAsString(attribute);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
@Override
public List<LanguageValue> convertToEntityAttribute(String dbData) {
try {
return objectMapper.readValue(dbData, List.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
}

@Entity
public class Human {
@Id
@GeneratedValue
private long id;
@Convert(converter = LanguageConverter.class)
private Map<String, String> name;
public Human() {
}
public Human(Map<String, String> name) {
this.name = name;
}
}
public class LanguageConverter implements AttributeConverter<Map<String, String>, String> {
private static final ObjectMapper objectMapper = new ObjectMapper();
@Override
public String convertToDatabaseColumn(Map<String, String> attribute) {
try {
return objectMapper.writeValueAsString(attribute);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
@Override
public Map<String, String> convertToEntityAttribute(String dbData) {
try {
return objectMapper.readValue(dbData, Map.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
}
