我正在尝试使用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在此列上创建索引?
答案 0 :(得分:3)
我最初认为HHH-4389是您正在寻找的,但您的情况似乎是一个不同的问题:Hibernate根本就没有生成预期的DDL语句。我会打开一个新的Jira问题。
答案 1 :(得分:2)
您必须指定索引的长度。 最大长度取决于存储引擎,但通常不超过1000字节, 如果charset是utf-8,你必须将最大长度除以3。
在table_name上创建索引guid_index(myguid(1000));
WHERE字段LIKE'前缀%'和WHERE字段='文本'条件就足够了。