2009-05-18 185 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