2013-01-09 83 views
0

我有以下JPA多对一为类层次结构

@MappedSuperclass 
public abstract class A { 
    @Id @GeneratedValue 
    public Long id; 
} 

@Entity 
public class B extends A { 
} 

@Entity 
public class C extends A { 
} 

@Entity 
public class D { 
    @ManyToOne 
    public A a; 
} 

问题是类d和领域的(可能是B或C类的)。映射应该是什么?

+0

问题是什么?你有什么错误吗? – vels4j

回答

1

如果您从其他实体引用A,则A不应该是MappedSuperclass,而应该是实体。您应该使用@Entity对其进行注释,并选择一个inheritance strategy

除此之外,映射将保持原样。

0

你在做什么是正确的。这将是映射A.因此,在表D中;我们会有一个额外的列,告诉我们A是B还是C.在Toplink,我们有列名作为类型。即使在休眠我们也有类似的概念。此列由ORM自动填充。