2016-11-18 44 views
1

如何在同一继承树中将单表类型继承与连接表类型混合? 我没有使用hibernate只是JPA。 我知道没有官方支持混合继承阅读JPA规范。 我无法更改架构。它确实与hibernate一起工作,但现在我需要使用openjpa来实现这一点。 我正在寻找一些解决方法。如何在JPA中混合继承类型

+0

您需要添加一些上下文。你能发布你正在尝试的代码吗? – bradimus

+0

JPA很清楚地告诉你在树的根目录中指定继承策略,这就是全部。你究竟能如何“混合”这个约束? –

回答

1

,这是为我工作:

超类:

@Entity 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "TYPE_DISCRIMINATOR") 
public class A extends SomeClass implements SomeInteface { 


… 
@Id 
@Column(name = "ID", nullable = false, precision = 0) 
public Integer getPk() { 
    return super.getPk(); 
} 
… 

注意 “SomeClass的” 不是一个实体。

子类 - “加盟” 继承:

@Entity 
@SecondaryTable(name = "A_SECOND_TABLE", pkJoinColumns = @PrimaryKeyJoinColumn(name ="ID")) 
@DiscriminatorValue("BD") 
public class B extends A implements SomeIntefaceB { 
… 

创建新表 “A_SECOND_TABLE” 与加入的超类主键 “ID”。 未在连接列,并出现在我们的餐桌的每个字段被标记这样的:

@Basic 
@Column(table = "A_SECOND_TABLE", name = "STATUS", nullable = false, precision = 0) 

通知表中的值。

子类 - 单表继承:

@Entity 
public class C extends A implements SomeIntefaceC {... 

简单的单表继承。