Десериализовать Java 8 LocalDateTime с помощью JacksonMapper

Я прочитал несколько вопросов с ответами здесь, в SO, относительно сериализации и десериализации междуjava.time.LocalDateTime и свойство JSON, но я не могу заставить его работать.

Мне удалось настроить приложение Spring Boot для возврата дат в желаемом формате (YYY-MM-dd HH:mm) но у меня есть проблемы с принятием значений в этом формате в формате JSON.

Это все, что я сделал до сих пор:

Добавлена ​​maven зависимость дляjsr310:

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

указанныйjsr310 в моем основном классе:

@EntityScan(basePackageClasses = { App.class, Jsr310JpaConverters.class })

Отключенная сериализация как метки времени вapplication.properties:

spring.jackson.serialization.write_dates_as_timestamps=false

И это мое сопоставление сущностей для datetime:

@Column(name = "start_date")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
@JsonFormat(pattern = "YYYY-MM-dd HH:mm")
private LocalDateTime startDate;

В моей базе данных я храню эту дату как TIMESTAMP в следующем формате:2016-12-01T23:00:00+00:00.

Если я получаю доступ к этой сущности через мой контроллер, он возвращает JSON с правильным форматом startDate. Когда я пытаюсь опубликовать и десериализовать его, используяYYYY-MM-dd HH:mm формат, я получаю следующее исключение:

{
  "timestamp": "2016-10-30T14:22:25.285+0000",
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.http.converter.HttpMessageNotReadableException",
  "message": "Could not read document: Can not deserialize value of type java.time.LocalDateTime from String \"2017-01-01 20:00\": Text '2017-01-01 20:00' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {MonthOfYear=1, WeekBasedYear[WeekFields[SUNDAY,1]]=2017, DayOfMonth=1},ISO resolved to 20:00 of type java.time.format.Parsed\n at [Source: java.io.PushbackInputStream@679a734d; line: 6, column: 16] (through reference chain: com.gigsterous.api.model.Event[\"startDate\"]); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.time.LocalDateTime from String \"2017-01-01 20:00\": Text '2017-01-01 20:00' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {MonthOfYear=1, WeekBasedYear[WeekFields[SUNDAY,1]]=2017, DayOfMonth=1},ISO resolved to 20:00 of type java.time.format.Parsed\n at [Source: java.io.PushbackInputStream@679a734d; line: 6, column: 16] (through reference chain: com.gigsterous.api.model.Event[\"startDate\"])",
  "path": "/api/events"
}

Я знаю, что есть много ответов на эту тему, но следование им и попытка в течение нескольких часов не помогли мне понять, что я делаю неправильно, поэтому я был бы рад, если бы кто-то мог указать мне, что я скучаю. Спасибо за любой вклад по этому вопросу!

РЕДАКТИРОВАТЬ: Это все классы, участвующие в процессе:

Repository:

@Repository
public interface EventRepository extends PagingAndSortingRepository<Event, Long> {
}

контроллер:

@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Event> createEvent(@RequestBody Event event) {
        return new ResponseEntity<>(eventRepo.save(event), HttpStatus.CREATED);
}

Мой JSON запрос Payalod:

{
  "name": "Test",
  "startDate": "2017-01-01 20:00"
}

Событие:

@Entity
@Table(name = "events")
@Getter
@Setter
public class Event {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "event_id")
    private long id;

    @Column(name = "name")
    private String name;

    @Column(name = "start_date")
    @DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
    @JsonFormat(pattern = "YYYY-MM-dd HH:mm")
    private LocalDateTime startDate;
}

Ответы на вопрос(3)

Ваш ответ на вопрос