У меня есть Hibernate Entity, скажем, A, с столбцом, определенным как
@NotBlank
@Size(min = 2, max = 50)
private String name;
Этот объект A упоминается как внешний ключ в другом объекте B как
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(foreignKey = @ForeignKey(name = "fk_a_b", value = ConstraintMode.CONSTRAINT), name = "aName",
referencedColumnName = "name", updatable = false)
@NotNull
private A a;
Теперь, когда гибернат пытается создать таблицу, он создает столбец name
как varchar (50) в таблице A, тогда как столбец aName
в таблице B создается как Varchar (255). Это вызывает следующую ошибку при создании ограничения внешнего ключа в MSSQL:
2018-05-10 07:34:42 ERROR SchemaUpdate:main - Column 'A.name' is not the same length or scale as referencing column 'B.aName' in foreign key 'fk_a_b'. Columns participating in a foreign key relationship must be defined with the same length and scale.
Я не вижу опции для установки длины столбца для столбца aName
, который используется для ссылки на столбец name
. Единственное решение, которое я вижу, - это использование columnDefinition
, которое я не хочу использовать, поскольку оно зависит от конкретной базы данных. Есть ли другой способ решить эту проблему?