Подтвердить что ты не робот

JPA - Как установить столбец строк в varchar (max) в DDL

С JPA, генерация DDL для атрибута:

@Column
final String someString;

будет someString varchar(255) null

@Column(length = 1337)
final String someString;

даст someString varchar(1337) null.

Но как я могу заставить его создать someString varchar(max) null?

Возможно ли использование атрибута length, или мне нужно использовать атрибут columnDefinition?

4b9b3361

Ответ 1

Прошло несколько месяцев, новые знания приобрели, поэтому я отвечу на свой вопрос:

@Lob
@Column
final String someString;

дает наиболее правильный результат. С версией hbm2ddl которую я использую, это будет преобразовано в text типа с SqlServerDialect. Поскольку varchar(max) заменяет text в более новых версиях SQL Server, мы надеемся, что более новые версии hbm2ddl varchar(max) вместо text для такого типа сопоставления (я застрял в довольно устаревшей версии Hibernate при момент..)

Ответ 2

Так как length определяется в спецификациях JPA и javadocs как тип int, а max не является int, тогда можно с уверенностью предположить, что вы отправлены в путь, зависящий от хранилища columnDefinition. Но тогда varchar(max) все равно зависит от хранилища данных.

Ответ 3

Вы можете использовать этот код -

Код модели:

@NotNull  
@Length(max = 7)  
@Column(name = "Gender")  
private String gender;

Вывод SQL - like-

> gender varchar(7)

Ответ 4

Используйте @Size(max = 1337). Он генерирует varchar(1337)