Не удалось преобразовать 1985-04-12T23: 20 в java.util.Date. - PullRequest
0 голосов
/ 03 октября 2019

[Spring + Kotlin]

Это зависимости:

implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-data-rest")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-web-services")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

Это сущность:

@Entity
class MatchEntity(
        @Id @GeneratedValue val id: Long,
        @NotBlank val matchDateTime: Date,
        @NotBlank @ManyToOne @JoinColumn val tournamentInvolved: TournamentEntity
)

Всякий раз, когда я пытаюсь выполнить следующий запрос:

interface MatchRepository : JpaRepository<MatchEntity, Long> {
    fun findMatchesByMatchDateTimeIsAfter(matchDateTime: Date)
}

с тестовой строкой, такой как 1985-04-12T23:20, я получаю ошибку:

QueryMethodParameterConversionException: Failed to convert 1985-04-12T23:20 into java.util.Date!

Я пытался, как предлагалось здесь , с такими шаблонами, как @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) и @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") в сигнатуре метода запроса, без решения.

Также, как предложено здесь , я попытался добавить

  1. compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0") для зависимостей

  2. spring.jackson.serialization.write_dates_as_timestamps=false для application.properties.

Не работает.

ОБНОВЛЕНИЕ: Я также пробовал с классами LocalDateTime и Instant. Все еще получают те же исключения:

QueryMethodParameterConversionException: Failed to convert 1985-04-12T23:20 into java.time.LocalDateTime!

QueryMethodParameterConversionException: Failed to convert 1985-04-12T23:20 into java.time.Instant!

1 Ответ

1 голос
/ 03 октября 2019

Решено

Использование @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm") сработало.

...