Sun*_*mar 1 java sql-server hibernate reverse-engineering hibernate-tools
我在Mssql中有一个列类型为TimeStamp的表,并使用hibernate(逆向工程)生成了pojo。在生成的Pojo中,时间戳字段被标记为byte []。
在调试过程中,我发现TimeStamp sqlType代码为“-2”,即Hibernate类型中的Binary Type,Hibernate二进制类型相当于java中的byte[]。
Java、hibernate 和 sql server 的时间戳数据类型
Mssql Hibernate Java Type
----- --------- ---------
Timestamp Binary byte[]
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在 Hibernate 中只有 mssql 类型的 TimeStamp 与 Binary 映射。但在其他数据库中,如 Postgres、oracle、mysql...timestamp 被映射到 hibernate 时间戳类型。
我可以通过将 sql 时间戳映射到 hibernate 时间戳来在 hibernate.reveng.xml 中添加类型映射来解决此问题。不知道进一步还会出现什么问题。
看来MSSQL时间戳与所有其他数据库时间戳类型不同。
SQL Server 时间戳是二进制数字,指示数据库中数据修改发生的相对顺序。时间戳数据类型最初是为了支持 SQL Server 恢复算法而实现的。
SQL Server TIMESTAMP 值不包含任何日期或时间相关值。它不依赖于系统日期。事实上,它包含二进制格式字符串来表示表中行的版本。这就是为什么它也被称为 ROWVERSION。另外,ROWVERSION 是 SQL Server 中的关键字,其行为与 TIMESTAMP 相同。
因此,Hibernate 将 sql server 时间戳类型映射到二进制类型。
| 归档时间: |
|
| 查看次数: |
3697 次 |
| 最近记录: |