Java 长字符串列上的Hibernate@Index错误

Java 长字符串列上的Hibernate@Index错误,java,hibernate,annotations,indexing,mysql-error-1170,Java,Hibernate,Annotations,Indexing,Mysql Error 1170,我有一个数据模型,其中我需要一个字符串列,由支持数据库索引: @Entity public class A { // ... @Column(length=2048) @Index(name="strFieldIndex") private String strField; } 添加@Column(length=2048)(hibernate不再为其生成varchar)的length属性时,MySQL上会出现以下错误消息: ERROR org.hiberna

我有一个数据模型,其中我需要一个
字符串
列,由支持数据库索引:

@Entity
public class A {
    // ... 

    @Column(length=2048)
    @Index(name="strFieldIndex")
    private String strField;
}
添加
@Column(length=2048)
(hibernate不再为其生成varchar)的
length
属性时,MySQL上会出现以下错误消息:

ERROR org.hibernate.tool.hbm2ddl.SchemaExport - 
    BLOB/TEXT column 'strField' used in key specification without a key length

我已经扫描了hibernate的API文档,但找不到设置密钥长度的方法。

我认为您必须手动声明MySQL需要此索引,因为hibernate无法处理所有DBMS特定的要求。例如,使用。

AFAIK,当Hibernate为您生成数据库架构时,将使用此注释,以便在数据库中创建索引。您是否让hibernate生成您的模式?索引创建了吗?@JB Nizet,是的,你是对的,尽管我看到我发布了一个不完整的问题,所以我已经更新了它!有没有办法在主键上执行此操作?我想我必须以某种方式抑制Hibernate生成主键,但这似乎不可行。有没有办法为主键生成提供自定义SQL?