对于MySQL索引,Hibernate标识符名称太长

时间:2012-09-07 08:25:46

标签: mysql hibernate inheritance indexing identifier

我遇到了继承和索引名称生成的问题。例如: 多个抽象类,彼此继承。

@Entity
public abstract class LongClassName1 implements Serializable { 
... 
    @Index(name = "externalIdIndex")
    String externalId;
...
}

@Entity
public abstract class LongClassName2 extends LongClassName1 { ... }

@Entity
public abstract class LongClassName3 extends LongClassName2 { ... }

@Entity
public abstract class LongClassName4 extends LongClassName3 { ... }

@Entity
public class LongClassName5 { ... }

现在Hibernate生成一个像LongClassName5LongClassName4LongClassname3LongClassname2externalIdIndex这样的索引 这会导致出现Identifier name 'LongClassName5LongClassName4LongClassname3LongClassname2externalIdIndex' is too long

等错误消息

我已经尝试了多种hibernate命名策略,并且自己也覆盖了这些方法,但到目前为止还没有任何工作。

我正在使用JBoss 7.1.1附带的hibernate版本。

自动生成的主键索引没问题。

我接下来可以做些什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用@Table和@Index注释手动设置索引名称?

@Table(appliesTo="tableName", indexes = { @Index(name="index1", columnNames={"column1", "column2"} ) } )