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

mrz*_*asa 8 java inheritance persistence hibernate single-table-inheritance

我有以下继承层次结构:

Task
  |
SpecificTask
  |
VerySpecificTask
Run Code Online (Sandbox Code Playgroud)

我想坚持使用单表继承,所以我注释了类:

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

@Entity
public class SpecificTask extends Task 

@Entity
public class VerySpecificTask extends SpecificTask
Run Code Online (Sandbox Code Playgroud)

当我尝试保存VerySpecificTask类的对象时,我收到一个错误:

Unable to resolve entity name from Class [com.application.task.VerySpecificTask] 
expected instance/subclass of [com.application.task.Task]
Run Code Online (Sandbox Code Playgroud)

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

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

mrz*_*asa 5

好的,我添加了鉴别器列,现在它可以工作了.更改的代码:

@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
Run Code Online (Sandbox Code Playgroud)

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