Spring Data REST - POST关系的新实体

pak*_*man 13 rest spring jpa jackson spring-data-rest

相关:Spring Data Rest版本2.0.2

我正在尝试使用@ManyToOne(而不是像示例中的@OneToOne)关系向Person发送实体(地址),如下所述:复杂对象图中的嵌入式实体引用,但我得到了一个Jackson错误:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: (was java.lang.NullPointerException) (through reference chain: Address["person"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: Address["person"])
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:228) ~[spring-web-4.0.3.RELEASE.jar:4.0.3.RELEASE]
Run Code Online (Sandbox Code Playgroud)

我觉得很奇怪,我可以在Address的"person"属性中发送带有rel和href的JSON对象,如:

"person": {
    "rel" : "people.Person",
    "href" : "http://localhost:8080/people/1"
}
Run Code Online (Sandbox Code Playgroud)

这仍然有效吗?提到的页面很旧(2012年).有没有更新的文档.我已经审查了参考文档,即使是最新的(迄今为止)2.1.0 RC1,但我发现它缺乏.

任何指针都会受到赞赏.

Stackoverflow建议我看看这个问题,在我的情况下失败的HTTP状态405 - 不支持请求方法'POST'...这可能是一个配置问题,但我原来的问题代表.

更新1:从参考文档部分4.1中它说:

有时,Spring Data REST的ObjectMapper的行为可能无法正确处理您的域模型,该行为已经专门配置为使用可以将域对象转换为链接并再次返回的智能序列化程序.可以通过很多方式构建数据,您可能会发现自己的域模型未正确转换为JSON.在这些情况下,尝试以通用方式支持复杂域模型有时也不实用.有时,根据复杂性,甚至不可能提供通用解决方案.

问题可能是我正在使用支持Hibernate的自定义Jackson ObjectMapper.我会尝试进一步挖掘.

更新2:没关系更新1,我删除了Hibernate4Module,行为是一样的.

JBC*_*BCP 14

您链接到的页面上的格式已过期.我刚刚更新了它.正确的格式是:

{
    "postalCode": "12345",
    "province": "MO",
    "lines": ["1 W 1st St."],
    "city": "Univille",
    "person": "http://localhost:8080/people/1"
}
Run Code Online (Sandbox Code Playgroud)

至少,这对我的实体有用.