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