Автоматическое приведение первичных ключей от удостоверения (int) к String - PullRequest
0 голосов
/ 23 октября 2019

В нашем приложении java Spring (Hibernate backed) мы оцениваем масштабный переход от создания пользовательских GUID для всех PK к генерации IDENTITY, поскольку в наших тестах он работает лучше и требует меньше места на диске.

В настоящее время мы внедряем varchar(36) направляющих на уровне базы данных (SQL Server 2012), и после масштабной миграции всех PK в IDENTITY INT мы сталкиваемся с несколькими проблемами в нашем приложении, все из которых связаны с ошибками приведения (очевидно).

Мне интересно, есть ли способ на уровне базы данных или ORM преобразовать все извлеченные столбцы PK из int в String, чтобы избежать массового рефакторинга во всех наших приложениях (тысячи запросов).

Мы используем сопоставления HBM, и это наша текущая настройка в файле сопоставления для идентификатора:

<id name="id" column="id" >
   <generator class="identity"></generator>
  </id>

Наш стек:

  • Sql Server 2012
  • Hibernate 4.3.5
  • Spring 4.1.6

Редактировать: Добавление сценария примера создания таблицы:

С varchar (36) НАПРАВЛЯЮЩИЕ

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...