【问题标题】:cannot map mssql timestamp column to hibernate无法将 mssql 时间戳列映射到休眠
【发布时间】:2019-11-17 05:54:21
【问题描述】:

我正在尝试读取 mssql 中的时间戳列,该列存储在时间戳中,但它是十六进制类型,我试图使用 spring jpa hibernate 对其进行映射,但它在下面抛出错误是我在 hibernate 中的列类型

@Temporal(TemporalType.TIMESTAMP)
@Column( name ="last_upadtedon")
private Date  updatedon;    

它在尝试从表中读取时抛出异常,我已经尝试了所有所需的方法,但对于如何在休眠中读取时间戳列似乎没有任何作用。我在这里错过了什么

【问题讨论】:

  • 时间戳数据类型是 SQL Server 实际上是二进制行版本,与日期或时间无关。列名last_updatedon 表明使用了错误的列数据类型。应该是 datetime 或 datetime2。
  • 你能分享你的堆栈跟踪吗?

标签: java sql-server hibernate spring-boot spring-data-jpa


【解决方案1】:

SQL Server 时间戳与其他时间戳不同。你应该改用DATETIME2

rowversion

是一种在数据库中公开自动生成的唯一二进制数的数据类型。 rowversion 通常用作对表行进行版本标记的机制。存储大小为 8 个字节。 rowversion 数据类型只是一个递增的数字,不保留日期或时间。 要记录日期或时间,请使用 datetime2 数据类型。

不推荐使用时间戳语法。此功能处于维护模式,可能会在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。


SQL Server Data Type Mappings

SQL Server 数据库引擎类型 | .NET 框架类型

时间戳 |字节[]

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2020-05-15
    • 2014-10-29
    • 2010-11-02
    • 2015-04-10
    • 2017-12-27
    相关资源
    最近更新 更多