2013-08-16 53 views
1

我有添加索引問題。我使用hibernate和註解驅動配置。從父類創建字段索引

我有這樣的事情:

@MappedSuperclass 
public abstract class BaseEntity { 
    @Id 
    private String id; 
    private String profileId; 
    ... 
    //getters and setters 
} 

和幾個子類

@Table(name="note") 
public abstract class Note extends BaseEntity{ 
    //different fields 
} 
@Table(name="message") 
public abstract class Message extends BaseEntity{ 
    //different fields 
} 

我想增加指數類BaseEntity還田 「簡檔」。但是如果我這樣做,使用註解@Index(name =「profileid_index」),它僅爲表「note」創建,並且由於index「profileid_index」已經存在而在「message」上失敗。

我沒有找到方法,如何讓hibernate生成唯一的索引名。或者可能有人知道如何在父類中指定字段的另一個解決方案。

回答

0

你有沒有看@Tables註釋:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/

你可以做的東西,如:

@Tables(value={@Table(appliesTo="table1", indexes={@Index(name="index1", columnNames={"column1", "column2"})}), 
      @Table(appliesTo="table2", indexes={@Index(name="index1", columnNames={"column1", "column2"})})}) 

應該在你的情況下幫助,如果你把這個註解你@MappedSuperclass,雖然我不知道是否有一個更清潔的解決方案

被更確切地說,你可以嘗試你的情況:

@Tables(value={@Table(appliesTo="note", indexes={@Index(name="index_profile_id1", columnNames={"profileId"})}), 
      @Table(appliesTo="message", indexes={@Index(name="index_profile_id2", columnNames={"profileId"})})})