Jad*_*dda 2 java hibernate spring-boot hibernate-6.x
我将 Spring Boot 项目升级到 Spring Boot 3.0.0 和 Hibernate 6.x。应用程序启动时没有任何错误,当我访问任何具有Instant日期类型的表信息时,出现以下错误
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The conversion from datetime2 to DATETIMEOFFSET is unsupported.
Run Code Online (Sandbox Code Playgroud)
我正在使用 SQL Server 2016 和 Spring Data 3.0.0
Hibernate 6 改变了即时日期类型的存储方式。
Instant 现在默认映射到类型代码 SqlType.TIMESTAMP_UTC,如果可能的话映射到带有时区的 SQL 类型时间戳,并回退到时间戳。由于此更改,某些数据库上可能会出现架构验证错误。
迁移到带有时区的时间戳可能需要像cast(old as timestamp with time zone)这样的迁移表达式。要保留向后兼容性,请将设置 hibernate.type.preferred_instant_jdbc_type 配置为 TIMESTAMP。
InstantHibernate 5以以下格式存储 Java 2020-08-03 14:54:40.0000000,Hibernate 6 添加了 Timezone,这将成为2020-08-03 14:54:40.0000000 +00:00
我不喜欢新的实现,但如果您想更改它,请将以下行添加到Spring Boot 中的application.properties文件中
spring.jpa.properties.hibernate.type.preferred_instant_jdbc_type=TIMESTAMP
有关详细信息,请参阅Hibernate 6 迁移指南。
| 归档时间: |
|
| 查看次数: |
5027 次 |
| 最近记录: |