代码之家  ›  专栏  ›  技术社区  ›  VeeArr

将索引应用于blob/longext字段

  •  2
  • VeeArr  · 技术社区  · 16 年前

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

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

    但是,由于列的长度为1400,因此使用 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 回复  |  直到 9 年前
        1
  •  3
  •   Pascal Thivent    16 年前

    我最初以为 HHH-4389 是您正在寻找的,但您的情况似乎是另一个问题:Hibernate根本没有生成预期的DDL语句。我将打开一个新的圣战联盟问题。

        2
  •  2
  •   Naktibalda    16 年前

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

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

    对于“prefix%”之类的where字段和“where field='text'条件来说,这已经足够好了。