Получить только значение идентификатора в JSON / XML
У меня есть два объекта jpa:
@Entity
public class Contact {
@Id
private Long id;
}
А также
@Entity
@XmlRootElement(name = "APPLICATION")
@XmlAccessorType(XmlAccessType.FIELD)
public class Application {
@Id
@JsonProperty("APPLICATION_ID")
@XmlElement(name = "APPLICATION_ID")
private Long id;
@ManyToOne
@JoinColumn(name = "contact_id", nullable = false)
@JsonProperty("CONTACT_ID")
@XmlElement(name = "CONTACT_ID")
private Contact contact;
Так что в моем контроллере я получаю JSON или XML приложения, как это:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<APPLICATION>
<APPLICATION_ID>6</APPLICATION_ID>
<CONTACT_ID>
<id>1</id>
</CONTACT_ID>
</APPLICATION>
но мне нужно
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<APPLICATION>
<APPLICATION_ID>6</APPLICATION_ID>
<CONTACT_ID>1</CONTACT_ID>
</APPLICATION>
Или в JSON у меня есть:
{
"APPLICATION_ID": 6,
"CONTACT_ID": {
"id": 1
}
но нужно:
{
"APPLICATION_ID": 6,
"CONTACT_ID": 1,
}
Как я могу получить только applicationID? Все геттеры, конструкторы и сеттеры добавлены lombok.
1 ответ
Использование lombok означает, что у вас также есть сгенерированные геттеры Используйте следующую команду для сопоставления контакта json, если вам нужен только идентификатор:
@Data
public class Contact {
@JsonValue
private Long id;
}
Это заставит json использовать id в качестве всего сериализованного значения. Для отображения XML, я думаю, что вы должны реализовать @XmlJavaAdapter