java - 嵌入式单表映射

标签 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 类中。 换句话说,结果我希望有一个条目表,其中包含来自内容的所有子类的列。

目前持续的进入测试表明:

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

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

最佳答案

规范说明...

一个实体可以从另一个实体类继承。实体支持继承、多态关联和多态查询。

它没有提到嵌入物是可继承的,因此不支持它们的继承。

关于java - 嵌入式单表映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21630851/

相关文章:

java - 连接到在 Docker 中运行的 Kafka

java - 干净地为很多类添加一些功能

java - 如何使用 Hibernate 保留枚举类型字段?

mysql - Grails 2.2 和 MySQL : java.net.SocketException:连接重置

java - 如何在 Spring Data JPA 中获取最后一页作为默认值

java - 使用 JPA/HQL 从多对多关系中检索列表

java - 如何在 JPA 中对结果查询进行分页?

java - java中的逻辑异或运算符是什么?

java - hibernate @onetomany FK 未设置

java - Vaadin 中的 JPA 实体管理器生命周期模式