2012-09-07 41 views
1

我遇到了繼承和索引名稱生成的問題。例如: 多個抽象類,它們是相互繼承的。休眠標識符名稱對於MySQL索引來說太長了

@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

我試過多次休眠命名策略,並已覆蓋自己的方法,但至今沒有奏效。

我正在使用JBoss 7.1.1附帶的休眠版本。

自動生成的主鍵索引是沒有問題的。

任何想法接下來我可以做什麼?

回答

0

您嘗試使用@Table和@Index批註手動建立索引名稱嗎?

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

嗨,我不想爲每個表格明確地設置索引,只爲抽象類。 – gesocks