Tho*_*mas 6 java spring hibernate jpa kotlin
我最近切换到 spring 3.0,hibernate 现在支持 json 类型定义,如下所示:
@JdbcTypeCode(SqlTypes.JSON)
var request: ReportRequestDto,
Run Code Online (Sandbox Code Playgroud)
但问题是ReportRequestDtohas val from: LocalDate,这会在保存实体时导致异常:
Java 8 date/time type `java.time.LocalDate` not supported by default
Run Code Online (Sandbox Code Playgroud)
我的 pom 中有jackson-datatype-jsr310依赖项,我也有对象映射器的配置:
@Bean
@Primary
fun objectMapper(): ObjectMapper {
val objectMapper = ObjectMapper()
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
objectMapper.registerModule(JavaTimeModule())
objectMapper.registerKotlinModule()
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
return objectMapper
}
Run Code Online (Sandbox Code Playgroud)
看起来 hibernate 没有“自动装配”对象映射器,因此它没有注册 java 时间模块。
您必须按照此处HibernatePropertiesCustomizer所述创建 bean
下面是 Kotlin 代码片段示例:
@Bean
fun jsonFormatMapperCustomizer(objectMapper: ObjectMapper): HibernatePropertiesCustomizer {
return HibernatePropertiesCustomizer { properties: MutableMap<String, Any> ->
properties[AvailableSettings.JSON_FORMAT_MAPPER] = JacksonJsonFormatMapper(objectMapper)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2159 次 |
| 最近记录: |