2

我正在尝试使用 Hibernate 注释在特定文本字符串上创建索引。我目前正在做的是:

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

但是,由于该列的长度为 1400,因此使用该longtext类型映射到 SQL。hbm2ddl 能够毫无意外地创建表,但是当它尝试创建索引时,我得到:

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

如何使用 Hibernate 在此列上创建索引?

4

2 回答 2

3

我最初认为HHH-4389是您正在寻找的,但您的情况似乎是一个不同的问题:Hibernate 根本没有生成预期的 DDL 语句。我会打开一个新的 Jira 问题。

于 2010-06-23T01:05:11.693 回答
2

您必须指定索引的长度。最大长度取决于存储引擎,但通常不超过 1000 字节,如果 charset 为 utf-8,则必须将最大长度除以 3。

在 table_name (myguid (1000) ) 上创建索引 guid_index;

对于 WHERE field LIKE 'prefix%' 和 WHERE field = 'text' 条件来说已经足够了。

于 2010-06-22T20:55:21.903 回答