将索引应用于Blob / Longtext字段

时间:2010-06-22 20:41:51

标签: mysql hibernate orm indexing mysql-error-1170

我正在尝试使用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在此列上创建索引?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

WHERE字段LIKE'前缀%'和WHERE字段='文本'条件就足够了。