2012-01-11 7 views
0

My Class "Resource_Image"はResourceのサブクラスであり、すべてのものが期待通りに機能しますが、データベースの両方のテーブルに "STRUCTURE"という列が含まれています。どうして? Resource_ImageインスタンスでsetRsを使用すると、スーパークラスのResource_Structureが設定されていますが、なぜ "res_images"テーブルの "STRUCTURE"列にも意味がありません。 下部のコードをご覧ください。何か案は?JPA - サブクラスでの継承を無効にする

@Entity 
@Table(name="res") 
@Inheritance(strategy=InheritanceType.JOINED) 
public class Resource { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "ID") 
    private Long id; 

    @JoinColumn(name = "STRUCTURE",nullable=false) 
    private Resource_Structure rs; 

    //getter and setter for rs 
    public final void setRs(Resource_Structure rs) { 
     this.rs = rs; 
    } 
    //... 
} 

@Entity 
@Table(name="res_images") 
public class Resource_Image extends Resource 
{ 
    @Column(name = "WIDTH",nullable=false) 
    private int width; 

    @Column(name = "HEIGHT",nullable=false) 
    private int height; 

    //NO getter and setter for rs 
} 

答えて

0

完全なクラスファイルですか?

コードから、構造はresテーブルでのみ定義する必要があります。自動DDL生成を使用していて、res_imagesで作成したものを見ていますか?その列を使用するResource_Imageとの関係はありますか?永続化してオブジェクト化すると、その列に挿入しようとしますか?

+0

これは、関連するプロパティ/クラスの抜粋のみです。 STRUCTUREとsetters/getterはresテーブルでのみ定義されていました。しかし、resとres_imageのデータベースに表示されています(はい、私は自動DLL生成を使用しています)。 persistの後、この列はres_image表ではnullであり、res表で正しく設定されています。したがって、res_imageのSTRUCTURE列は無用ですが利用可能です。私の意見では、そのプロパティを上書きする可能性があるためにカラムが作成されます.JAAに「このプロパティはスーパークラスにのみ存在し、上書きできません」と伝える方法はありますか? –

関連する問題