[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!

我尝试按照here的建议,在查询方法的签名中使用@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")之类的模式,但没有解决。

另外,根据建议here,我尝试添加
  • 到依赖项
  • compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0")
  • 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!

    最佳答案

    解决了

    使用@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm")起作用。

    09-15 14:46