嵌入式单表映射

时间:2014-02-07 14:56:26

标签: java hibernate jpa

我正面临着建模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 {
...
}

我希望将Content的所有子类映射为嵌入到Entry类中。 换句话说,在结果中我想要一个包含来自Content的所有子类的列的Entry表。

目前持久的Entry测试表明:

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

所以似乎加载失败,因为它不是获取AContent而是尝试实例化抽象内容。 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

规格说......

实体可以从其他实体类继承。实体支持继承,多态关联和多态查询。

它没有说明嵌入式是可继承的,因此不支持它们的继承。