我在我的应用程序中使用spring-data-rest。我使用configureRepositoryRestConfiguration
配置了repositoryRest我在此配置中添加了以下两行
config.exposeIdsFor(Person.class);
config.setDefaultMediaType(MediaType.APPLICATION_JSON_UTF8);
config.useHalAsDefaultJsonMediaType(false);
在添加此配置之前,我的响应如下所示
{
"_embedded": {
"persons": []
},
"_links": {
"self": {
"href": "http://192.168.2.42:8082/persons/search/findByGroupId?groupId=44"
}
}
}
我可以按预期使用RestTemplate获取空人列表。但在添加上述配置后,我得到以下响应结构
{
"links": [{
"rel": "self",
"href": "http://localhost:8082/persons/search/findByGroupId?groupId=44"
}],
"content": [{
"collectionValue": true,
"relTargetType": "com.myapp.example.domain.Person",
"value": []
}]
}
使用此回复RestTemplate
会返回一个大小为1的列表,其中包含我所在域中所有属性的null
值。
任何人都可以帮助获得具有此结构的空列表。
我使用以下代码从API获取响应:
restTemplate.exchange(
url,
GET,
HttpEntity.EMPTY,
parameterizedTypeReference<Resources<Person>>,
Collections.emptyMap()
);
更新
这是一个spring-data-rest bug。因为代码中的某处,而不是Person
,EmbeddedWrapper
被用作域类型。在调查代码后,我发现JSON响应中的"collectionValue"
,"relTargetType"
和"value"
是从EmbeddedWrapper
类反序列化的。