Been trying to use Micronaut Data module for db persistence but getting following error when I try to save an entity with ZonedDateTime field.
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)
I would have assumed that Micronaut would have default implementation to handle Java8 date types. Not sure why it doesn't.
I have also registered a type converter below (where TypeUtils.toUtilDate is internal class which does the actual conversion). I see that Micronaut picked up this class (so it prints a log stmt if I add one).
@Factory
class TypeConverters {
@Singleton
fun zdatetimeToUtilDate(): TypeConverter<ZonedDateTime, Date> {
return TypeConverter { datetime, targetType, context -> Optional.of(TypeUtils.toUtilDate(datetime)) }
}
}
Even then, I'm still getting the above mentioned error. Any idea why would it be so?