2012-02-14 50 views
0

我在Oracle DB中有很少的表,並且喜歡執行逆向工程。 每個數據庫表列名稱具有唯一的表名首字母作爲前綴,例如「ID」爲「C_ID」,「C_LAST_UPDATED」等。其次,在每個表格中有少數列是常見的,例如, 「X_ID」,「X_LAST_UPDATED」其中「X」是表的首字母。Eibernate的Hibernate基礎實體可以共享類似的特性

我的問題是,是否有可能使基本實體擁有常見的屬性,如id,最後更新爲上述表?

在此先感謝

編輯:

到目前爲止,我已經嘗試創建BaseEntity但它不似乎工作,同時生成的代碼解決我剛纔提到的,即常見的屬性有不同的問題每個表中的列名稱。

@MappedSuperclass 
public abstract BaseEntity implements java.io.Serializable 
{ 
    @Id 
    @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0) 
    private BigDecimal ID ; 

    @Temporal(TemporalType.DATE) 
    @Column(name = "INDATE", nullable = false, length = 7) 
    private Date INDATE; 


//--- Getters & Setters --- 
} 


@Entity 
@Table(name = "TABLE1", schema = "TEMP_1") 
public class Entity1 extends BaseEntity 

{ 
    @Id 
    @Column(name = "T1_ID", unique = true, nullable = false, precision = 22, scale = 0) 
    private BigDecimal ID; 

    @Temporal(TemporalType.DATE) 
    @Column(name = "T1_INDATE", nullable = false, length = 7) 
    private Date INDATE; 


//--- Getters & Setters --- 
} 


@Entity 
@Table(name = "TABLE2", schema = "TEMP_1") 
public class Entity2 extends BaseEntity 

{ 
    @Id 
    @Column(name = "T2_ID", unique = true, nullable = false, precision = 22, scale = 0) 
    private BigDecimal ID; 

    @Temporal(TemporalType.DATE) 
    @Column(name = "T2_INDATE", nullable = false, length = 7) 
    private Date INDATE; 


//--- Getters & Setters --- 
} 

回答

0

我認爲你可以使用 javax.persistence.MappedSuperclass。用此註釋標記的類沒有單獨的表,並且可能包含到通用字段的映射。我不認爲你的反向engenireeng工具會有幫助,你應該手動創建它。

+0

我明白它應該工作,如果每個類/表中的共同屬性必須具有相同的列名稱,例如表1的ID列爲「T1_ID」,而表2的「T2_ID」不允許我使用超類。請看編輯過的部分 – Rehman 2012-02-14 17:07:00

+0

看起來在這種情況下,你不能在所有類中使用普通類。 – Mirian 2012-02-15 07:16:57

+0

感謝您的回覆。這就是我所假設的。我想,我應該刪除我不允許做的列前綴。 – Rehman 2012-02-15 10:37:37