2014-02-07 51 views
2

我正面臨建模hibernate映射的問題。這是我有什麼:嵌入式單表映射

@Entity 
@Table 
public class Entry { 

@Id private long id; 
@Embedded private Content content; 
... 
} 

@MappedSuperclass 
@DiscriminatorColumn(name="content_type") 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
public abstract class Content { 

@Column(name="content_type") private String type; 
... 
} 

@Embeddable 
@DiscriminatorValue("A") 
public class AContent extends Content { 
... 
} 

@Embeddable 
@DiscriminatorValue("B") 
public class BContent extends Content { 
... 
} 

我想要所有內容的子類被映射爲嵌入到Entry類。 換句話說,結果我想有一個Entry列表來自所有內容子類的列。

目前持續入學考試說:

javax.persistence.PersistenceException: org.hibernate.InstantiationException: 
Cannot instantiate abstract class or interface: : foo.bar.Content 

如此看來,加載失敗的原因,而不是讓AContent它試圖實例化抽象的內容。 任何想法?

回答

3

規格說...

實體可以從另一個實體類繼承。實體支持繼承,多態關聯和多態查詢。

它沒有提到可嵌入物是可繼承的,因此不支持繼承。