0
禁用繼承
我的班級「Resource_Image」是資源的一個子類,萬事都如預期,但在我的數據庫包含列「結構」兩個表。爲什麼? 在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/getters只在res表中定義。但它顯示在數據庫res和res_image(是的,我使用自動DLL生成)。保留後,此列在res_image表中爲null,並在res表中正確設置。所以res_image中的STRUCTURE-column是完全無用的,但是可用。在我看來,該列是由於可能覆蓋該屬性而創建的,有沒有辦法告訴JPA「這個屬性只存在於超類中,不能被覆蓋」? – 2012-01-23 10:53:35