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?