it-roy-ru.com

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-? 

32
Tobb

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

@Lob
@Column
final String someString;

дает наиболее правильный результат. В версии hbm2ddl, которую я использую, она будет преобразована в тип text с помощью SqlServerDialect. Поскольку varchar(max) ЯВЛЯЕТСЯ ЗАМЕНОЙ text в более новых версиях SQL Server , надеюсь, более новые версии hbm2ddl приведут к varchar(max) вместо text для этого типа отображения (я застрял в довольно устаревшей версии Спящий на данный момент ..)

60
Tobb

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

0
DataNucleus