Я работаю над проектом, целью которого является преобразование существующего приложения в SQL Server.Однако у меня возникают проблемы с генерацией идентификаторов, в частности, с преобразованием типов данных.
Спящие аннотации для моего столбца идентификаторов:
@Id
@GeneratedValue(generator="ID_GEN", strategy=GenerationType.TABLE)
@TableGenerator(name="ID_GEN", table="[$SSMA_seq_SEQ_EXAMPLE_ID]")
@Column(name="ID", unique="true", nullable="false")
public String getId() {
return this.id;
}
Этот столбец идентификаторов этоготаблица сопоставляется с varchar(50)
, а $SSMA_seq_SEQ_EXAMPLE_ID
сопоставляется с таблицей с одним столбцом id
с типом данных numeric(38,0)
.
Когда я пытаюсь вставить (путем создания объекта Javaи сохраняя его), я получаю следующее исключение: com.microsoft.sqlserver.jdbc.SQLServerException: Error converting data type varchar to numeric
.
Концептуально, имеет смысл, что numeric(38,0)
будет соответствовать varchar(50)
, но кажется, что неявное преобразование SQL Server в этом случае не работает.К сожалению, изменение определения базы данных на данный момент невозможно.
Существуют ли какие-либо глобальные параметры, которые приведут к принудительному преобразованию в спящем режиме или в SQL Server?Поскольку я использую hibernate для генерации идентификаторов, у меня нет большого контроля над SQL, который генерируется для получения идентификатора перед передачей этого объекта в базу данных.