2009-05-18 237 views
1

我想映射一個JPA(現在使用Hibernate)與多態類型的多對一關係,但是我沒有運氣。我不明白爲什麼這是不可能的,或者爲什麼我會被迫在映射中聲明一個具體類型。這裏是一個例子:Java JPA多對多映射

@MappedSuperclass 
class BaseClass { 
    @Id 
    long id; 
} 
class ClassWithList extends BaseClass { 
    String attribute; 

    @OneToMany(mappedBy="backPointer") 
    List<ListClass> list; 
} 
class ListClass extends BaseClass { 
    String listItemData; 

    @ManyToOne 
    @JoinColumns({ 
     @JoinColumn(name="baseId"), 
     @JoinColumn(name="baseType"), 
    }) 
    BaseClass backPointer; 
} 

感謝您的任何建議,你可以給。

回答

1

對於特定記錄,您無話可說,它是哪種類型。我建議你看看TopLink JPA: How-To Define Inheritance。它同樣適用於Hibernate。

+0

你是正確的,我沒有在ListClass對象上鍵入列,但我不認爲如何定義繼承文檔是我期待做的。我想我可以將類型列添加到ListClass,但我想我沒有辦法讓JPA提供者知道使用該類型。我將在我的示例中添加@JoinColumns註釋。 – Mike 2009-05-18 13:15:17