Применение индекса к полю Blob / Longtext - PullRequest
2 голосов
/ 23 июня 2010

Я пытаюсь создать индекс для определенной текстовой строки, используя аннотации Hibernate. То, что я сейчас делаю, это:

@Index(name="guid_index")
@Column(length=1400)
private String myGUID;

Однако, поскольку длина столбца равна 1400, это сопоставляется с SQL с использованием типа longtext. hbm2ddl может создать таблицу без ошибок, но когда он пытается создать индекс, я получаю:

Unsuccessful: create index guid_index on table_name (myguid);
BLOB/TEXT column 'myguid' used in key specification without a key length

Как создать индекс для этого столбца с помощью Hibernate?

Ответы [ 2 ]

3 голосов
/ 23 июня 2010

Сначала я подумал, что HHH-4389 - это то, что вы ищете, но ваш случай кажется другой проблемой: Hibernate просто не генерирует ожидаемый оператор DDL. Я бы открыл новый выпуск Jira.

2 голосов
/ 23 июня 2010

Вы должны указать длину индекса.Максимальная длина зависит от механизма хранения, но обычно это не более 1000 байт. Если charset равен utf-8, вам нужно разделить максимальную длину на 3.

создать индекс guid_index для table_name (myguid (1000));

Это достаточно для поля WHERE, например, «prefix%» и поля WHERE = «text».

...