Java 如何避免Joda对象中的内容字段?

Java 如何避免Joda对象中的内容字段?,java,jodatime,spring-data-rest,spring-hateoas,jackson-modules,Java,Jodatime,Spring Data Rest,Spring Hateoas,Jackson Modules,我在文档中使用Joda对象(DateTime和DateTimeZone),每当我通过REST接口访问它时,我都会得到带有如下字段的条目 lastAggregationDate:{content:“2016-07-12T17:58:43.643Z”} 而不是 lastAggregationDate:“2016-07-12T17:58:43.643Z” 我声明了Joda Jackson依赖项,并且看到了这些类型的反序列化程序,所以我对这里的工作感到困惑 我在一个应用程序中复制了这种行为,但使用了Ja

我在文档中使用Joda对象(DateTime和DateTimeZone),每当我通过REST接口访问它时,我都会得到带有如下字段的条目

lastAggregationDate:{content:“2016-07-12T17:58:43.643Z”}

而不是

lastAggregationDate:“2016-07-12T17:58:43.643Z”

我声明了Joda Jackson依赖项,并且看到了这些类型的反序列化程序,所以我对这里的工作感到困惑


我在一个应用程序中复制了这种行为,但使用了Java的原生日期类型,而不是Joda的。我已将date of birth属性添加到Person对象中,并修改了
shouldRetrieveEntity
测试以查找
$.dateOfBirth.content
。我已确认正在使用序列化程序,并且似乎将
LocalDate
对象视为资源而不是简单属性。

该问题是由于Spring Boot未正确设置
MongoMappingContext
造成的。已经为Spring Boot创建了一张罚单,预计将在1.4.1版本中进行修复(这个答案归功于Oyku Gencay和Oliver Gierke)。有关更多详细信息,请参阅或。

这在Spring Data Hopper-SR4中固定:

同样的问题也请参见。谢谢,亚当。Marc在记录问题方面做得很好,他的帖子很有帮助,因为他指出升级到1.4.0是导致问题的原因。我也怀疑这一点,并将使用1.4.0之前的依赖项在我的示例中添加一个分支以进行确认。我添加了一个带有修改后的测试代码的分支,以证明“内容”在1.4.0之前不存在。我创建了一个分支。如果它对你有影响,请投赞成票。我刚刚将我的依赖项更新为Sprint Boot 1.4.1。拉请求添加的测试使用java.time.LocalDateTime检查结果。joda time对象描述的问题仍然存在。忘记我之前的评论:升级到Spring Boot 1.4.1确实解决了本文中描述的问题,但是如果用@EnableMongoAudit注释主应用程序类,它会再次破坏序列化。我在我的项目中也看到了同样的情况(与上面提到的示例相反)。我最终在过渡期间使用了
@JsonUnwrapped
,正如Spring罚单中提到的。Spring Boot 1.4.2明确解决了这个问题,无论应用程序是否用@EnableMongoAudit注释。