2013-01-09 85 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自動填充。