アプリケーション サーバー プロジェクト (Spring Boot ではない) で RestTemplate を使用して、エンドポイントからエンティティを取得しています。
エンティティ DTO (JAXB アノテーションを使用) は次のとおりです。
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "entity")
public class EntityDTO {
private Integer id; // this was missing
private List<String> parameterName; // parameter names
public EntityDTO() {
}
@XmlElementWrapper(name = "parameterNames")
@XmlElement(name = "parameterName")
public List<String> getParameterName() {
return parameterName;
}
public void setParameterName(List<String> parameterName) {
this.parameterName = parameterName;
}
@XmlElement(name = "id")
public Integer getId() {
return id;
}
// this was returning Integer instead of void
public void setId(Integer id) {
this.id = id;
}
}
したがって、エンドポイントでは、たとえば次のようにエンティティが返されます。
{
"entity": {
"id": 1,
"parameterNames": {
"parameterName": [
"param1",
"param2"
]
}
}
}
次のコードで RestTemplate を使用して、前のエンドポイントへの GET を実行しています。
...
HttpEntity<EntityDTOO> response = restTemplate.exchange(
uri,
HttpMethod.GET,
httpEntity,
EntityDTO.class);
...
しかし、RestTemplate は次の方法でエンティティをアンマーシャリングします。
id: 1
parameterName: null
しかし、私は期待していました:
id: 1
parameterName: ["param1", "param2"]
RestTemplate を使用して @XmlElementWrapper(name = "parameterNames") アノテーションを認識する方法を知っている人はいますか?
前もって感謝します。