3

Я использую Joda объекты (DateTime и DateTimeZone) в документе, и всякий раз, когда я к нему доступ через интерфейс REST я получаю записи с полями, как этотКак избежать полей содержимого объектов Joda?

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

вместо

lastAggregationDate: "2016-07-12T17:58:43.643Z"

У меня есть зависимости Joda Jackson, и я вижу де/сериализаторы для этих типов, поэтому я озадачен тем, что здесь работает.

Я продублировал это поведение в slightly modified Spring sample project, но используя родные типы даты Java, а не Joda. Я добавил свойство даты рождения для объекта Person и изменил тест shouldRetrieveEntity, чтобы найти $.dateOfBirth.content. Я подтвердил, что используется сериализатор, и кажется, что объект LocalDate рассматривается как ресурс, а не как простое свойство.

+0

Смотрите также http://stackoverflow.com/q/39170405/466738 для одной и той же проблемы –

+0

Спасибо, Адам. Марк делает большую работу по документированию проблемы, и его сообщение полезно в том, что он вызывает обновление до 1.4.0 как вызывающее проблему. Я подозревал то же самое и добавлю ветку с использованием зависимостей pre-1.4.0 к моему образцу для подтверждения. – roborative

+0

Я добавил [ветку] (https://github.com/robmoore/gs-accessing-mongodb-data-rest/tree/spring-1.3.7) с измененным тестовым кодом, чтобы продемонстрировать, что «контент» не был пока не будет до 1.4.0. – roborative

ответ

0

Проблема возникает из-за весенней загрузки, не устанавливая MongoMappingContext правильно. Билет был создан для Spring Boot, и исправление ожидается для выпуска 1.4.1 (кредит для этого ответа относится к Oyku Gencay и Oliver Gierke). Для получения более подробной информации см. ticket или pull request.

+0

Я только что обновил свои зависимости до Sprint Boot 1.4.1. Тесты, добавленные по запросу pull, проверяют результаты с помощью java.time.LocalDateTime. Проблема, описанная с объектами времени joda, остается. –

+0

Забудьте о моем предыдущем комментарии: обновление до Spring Boot 1.4.1 * делает * решение проблемы, описанной в этом сообщении, но если вы аннотируете основной класс приложения с помощью @EnableMongoAudit, он снова прерывает сериализацию. –

+0

Я видел то же самое с моим проектом (в отличие от образца, упомянутого выше). В итоге я использовал '@ JsonUnwrapped', как было упомянуто в билете Spring. – roborative

Смежные вопросы