java - Hibernate:是否可以将多级继承映射到单个表?

标签 java hibernate inheritance persistence single-table-inheritance

我有以下继承层次结构:

Task
  |
SpecificTask
  |
VerySpecificTask

而且我想使用单表继承来持久化它,所以我注释了类:

@Entity
@Table(name="task")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Task 

@Entity
public class SpecificTask extends Task 

@Entity
public class VerySpecificTask extends SpecificTask

当我尝试保存 VerySpecificTask 类的对象时,出现错误:

Unable to resolve entity name from Class [com.application.task.VerySpecificTask] 
expected instance/subclass of [com.application.task.Task]

我做错了什么?是否可以将多级继承映射到单表?

编辑:这是一个蹩脚的错误,我很快就解决了,所以我删除了它以免弄乱这个问题。

最佳答案

好的,我添加了鉴别器列,现在可以使用了。 更改代码:

@Entity
@Table(name="task")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
        name="DTYPE",
        discriminatorType=DiscriminatorType.STRING
    )

@Entity
public class SpecificTask extends Task 

@Entity
public class VerySpecificTask extends SpecificTask

(我添加它只是为了提供一个可接受的答案——如果没有对问题的有用评论,我不会解决它。)

关于java - Hibernate:是否可以将多级继承映射到单个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130796/

相关文章:

java - 将 ResultSet 转换为 int 数组

Java 多个菜单项带有事件监听器?

hibernate - Hibernate 3.5 中的 @OrderColumn 注释

java - 在Java中对多个相对列表进行排序

Java:某些情况下的 ClassCastException

java - 如何在保存和抛出检查异常之前进行验证

java - Hibernate, MySQL - 数据截断 : Data too long for column exception message

java - 如何从父类(super class)扩展内容? ( java )

java - 我如何从两个不同的抽象类中实现特定的方法?

继承类类型的 C++ 容器