1

一直在尝试使用 Micronaut Data 模块进行数据库持久性,但是当我尝试使用 ZonedDateTime 字段保存实体时出现以下错误。

io.micronaut.data.exceptions.DataAccessException: Cannot convert type [class java.time.ZonedDateTime] to target type: class java.util.Date. Consider defining a TypeConverter bean to handle this case.
    at io.micronaut.data.runtime.mapper.QueryStatement.lambda$convertRequired$0(QueryStatement.java:204)
    at java.base/java.util.Optional.orElseThrow(Optional.java:408)
    at io.micronaut.data.runtime.mapper.QueryStatement.convertRequired(QueryStatement.java:203)

我会假设 Micronaut 将具有处理 Java8 日期类型的默认实现。不知道为什么没有。

我还在下面注册了一个类型转换器(其中 TypeUtils.toUtilDate 是进行实际转换的内部类)。我看到 Micronaut 选择了这个类(所以如果我添加一个,它会打印一个日志 stmt)。

@Factory
class TypeConverters {

  @Singleton
  fun zdatetimeToUtilDate(): TypeConverter<ZonedDateTime, Date> {
    return TypeConverter { datetime, targetType, context -> Optional.of(TypeUtils.toUtilDate(datetime)) }
  }

}

即使那样,我仍然收到上述错误。知道为什么会这样吗?

4

0 回答 0