我在webapp中使用toplink JPA,我只想將一個表映射到類層次結構。我想要一個類代表大部分數據,一個類繼承它(因此它獲得了超類的所有字段以及另外一些包含大量數據的類)。我一直不想要大量的數據,也不想讓它們保存在請求對象中等等。我只想在有人選擇其中一個摘要時使用大數據。我已經設置瞭如下的類(作爲示例簡化)。Toplink JPA繼承 - 摘要/詳細信息關係
@Entity
@Table(name = "TRANSCRIPTS")
@MappedSuperclass //also tried without this - same error
public class Summary {
@Id
@Column(name = "id")
private long id;
@Column(name = "title")
private String title;
//rest of class etc.
}
@Entity
@Table(name = "TRANSCRIPTS")
public class Detail extends Summary {
@Id
@Column(name = "fullText")
private String fullText;
//rest of class etc.
}
當我嘗試並使用該層次結構中獲取數據,我相處的
Unknown column 'DTYPE'
所以它在尋找一個descriminator列線的錯誤。我還沒有設置,因爲它不是那種關係。
有沒有一種不同的方式可以在JPA中映射此摘要/詳細信息關係?或者我應該放棄類繼承,並且有兩個單獨的不相關的類,一個表示摘要數據,一個表示全部數據(並重新定義摘要字段)。
謝謝。
所以我只需要此列存在,它沒有做什麼? – ssloan
它將幫助toplink瞭解數據庫表中的哪一行屬於您的類中的哪個實體。它將包含您將在@DiscriminatorValue註釋中輸入的生成值或值。它稱爲鑑別器列。 –
但是每行都與兩個類有關 - 類表示相同的數據項,只是它的一個子集。這不是像表1代表一般人,表2代表教師,我希望爲教師提供一個班級和一個班級。所以就數據庫而言,沒有任何區別。所有行在此列中都具有相同的值。 – ssloan