java - 自动将主键从身份(int)转换为字符串
问题描述
在我们的 java Spring(Hibernate 支持)应用程序中,我们正在评估从所有 PK 的自定义 GUID 生成到 IDENTITY 生成的大规模过渡,因为在我们的测试中它表现更好并且占用的磁盘空间更少。
目前,我们varchar(36)
在数据库级别(SQL Server 2012)实现了 guid,并且在将所有 PK 大量迁移到IDENTITY INT
我们的应用程序中之后,我们面临着几个问题,所有这些问题都与转换错误有关(显然)。
我想知道是否有办法在数据库级别或 ORM 级别将所有检索到的 PK 列从 int 转换为 String,以避免在我们所有的应用程序中进行大规模重构(数千个查询)。
我们使用 HBM 映射,这是我们在 ID 映射文件中的当前设置:
<id name="id" column="id" >
<generator class="identity"></generator>
</id>
我们的堆栈:
- 数据库服务器 2012
- 休眠 4.3.5
- 春天 4.1.6
编辑:添加表创建示例脚本:
使用varchar(36) GUIDS
CREATE TABLE [dbo].[test_table](
[id] [varchar](36) NOT NULL
CONSTRAINT [PK_test_table] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
有身份
CREATE TABLE [dbo].[test_table](
..other columns...
[id] [INT] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_test_table_id] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
解决方案
推荐阅读
- javascript - 将自定义事件发送到 Google Analytics 并捕获该数据的正确方法是什么?
- python - 用于查找与输出的特征关系的神经网络模型
- linker - Q 在调试版本中使用发布库
- terminator - 几天后终结者 1.91 变慢了
- scala - 如何在由案例类列表组成的 DataSet 中表示空值
- reactjs - 不显示图像
- asp.net-mvc - 使用另一个站点的 ASP.NET 成员身份在一个站点上进行身份验证
- selenium - nightwatch 测试失败,依次出现多个点击事件
- list - Haskell:列表操作
- github - /github/home 是否在 github 操作之间持续存在?