2012-02-14 8 views
0

Oracle DBにはほとんどテーブルがなく、リバースエンジニアリングを実行するのが好きです。 各DBテーブルの列名は、接頭辞として一意のテーブル名の頭文字「C_ID」、「C_LAST_UPDATED」などの「ID」があります。次に、各表に共通する列はほとんどありません。 "X_ID"、 "X_LAST_UPDATED"ここで "X"はテーブルの頭文字です。類似したプロパティを共有できるEticsのHibernate基本エンティティ

私の質問は、idのような共通のプロパティを保持する基本エンティティを作成できますか?前述のテーブルで最後に更新されましたか?事前に

おかげ

EDIT:

は、これまでのところ私は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

+0

この場合は、すべてのクラスに対して一般的なクラスを使用することはできません。 – Mirian

+0

返信ありがとうございます。それは私が推測していたものです。私は、私が行うことが許可されていない列の接頭辞を削除する必要がありますと思います。 – Rehman

関連する問題