gpt4 book ai didi

sql-server - Hibernate 在 SQL Server 中将 Java 8 DateTimeLocal 保留为 VARBINARY

转载 作者:行者123 更新时间:2023-12-05 07:39:37 25 4
gpt4 key购买 nike

我正在尝试在一个由 SQL Server 数据库支持的新应用程序中使用 Java 8 日期和时间 API。 Internet 上的所有资源都指出 Hibernate 5.2+ 开箱即用地支持此 API 和 Java 8,并建议一种简单的方法,如:

@Entity
@Table(name="...", schema="...")
public class DepositDetails {

// ... id, other fields ...

private LocalDateTime createdOn;

// ... other fields, getters/setters ...

}

然而,在我的例子中,在数据库中创建的列(使用 hibernate-jpamodelgen )创建为 VARBINARY(255) 而不是 DATETIME/DATETIME2。
我也尝试过明确指定数据类型 (columnDefinition = "DATETIME") - 在这种情况下,列类型是按照指定正确创建的,但是当我尝试在表中保留数据时,我得到一个异常,指出 varbinary 数据不能转换为日期时间...

有关可能与问题相关的应用程序设置的更多详细信息:

  • Hibernate 是 5.2.12.Final
  • SQL Server 是 Microsoft SQL Server Developer Edition(64 位)14.0.900.75(在 Docker 容器中)
  • MSSQL JDBC 驱动程序是 6.2.2.jre8

最佳答案

问题是,正如@Alan Hay 所建议的那样,Hibernate 5.2 在依赖关系树中被 Hibernate 5.0 取代,Hibernate 5.0 被 Spring Boot 默认使用。
此外,我在子 pom.xml 中有一个属性设置为 5.2.12.Final,但在父级别上,相同的属性(再次由 Spring Boot)设置为 5.0.x。这样,本应从子模块中获取 5.2 依赖项的父应用程序实际上从 Spring Boot 中获取了旧版本。
解决方案是在父 pom.xml 中设置属性。

关于sql-server - Hibernate 在 SQL Server 中将 Java 8 DateTimeLocal 保留为 VARBINARY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46983107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com