2017-02-28 120 views
0

我有以下类的结构:Hibernate进行多层次的混合继承策略层次结构

Class diagram

我想生成与休眠以下三个表:

  • PlanItem:所有它的属性
  • 任务:与所有的属性和它的子属性
  • 阶段:其所有在进贡

我试图混合inheritancetypes,但它没有工作:

@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
public abstract class PlanItem {...} 

@Entity 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
public class Stage extends PlanItem {...} 

@Entity 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
public class Task extends PlanItem {...} 

@Entity 
public class HumanTask extends Task {...} 

@Entity 
public class ProcessTask extends Task {...} 

@Entity 
public class CaseTask extends Task {...} 

我已经与辅助表试验,得到了或多或少的期望的结果:

@Entity 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
public abstract class PlanItem {...} 

@Entity 
@SecondaryTable(name = "Stage") 
public class Stage extends PlanItem {...} 

@Entity 
@SecondaryTable(name = "Task") 
public class Task extends PlanItem {...} 

@Entity 
@SecondaryTable(name = "Task") 
public class HumanTask extends Task {...} 

@Entity 
@SecondaryTable(name = "Task") 
public class ProcessTask extends Task {...} 

@Entity 
@SecondaryTable(name = "Task") 
public class CaseTask extends Task {...} 

但我想知道是否有更优雅和简单的解决方案?

回答

1

这是目前不可能的,看到following issue了解更多信息。我认为你使用辅助表的“黑客行为”目前是你能得到的最好的。

+0

谢谢你的回答。在你的链接中,他们说“这个问题的解决方案已经在5.0的代码库中了,我没有预见到这个问题将在4.x中解决。”我使用了Hibernate-core-5.0.2.final.jar,但这个版本的Hibernate也不可行。 – Tim

+1

这就是为什么它没有解决,仍然没有完全实施。 –