我在webapp中使用toplink JPA,我只想将一个表映射到类层次结构。我想要一个类代表大部分数据,一个类继承它(因此它获得了超类的所有字段以及另外一些包含大量数据的类)。我一直不想要大量的数据,也不想让它们保存在请求对象中等等。我只想在有人选择其中一个摘要时使用大数据。我已经设置了如下的类(作为示例简化)。Toplink JPA继承 - 摘要/详细信息关系
@Entity
@Table(name = "TRANSCRIPTS")
@MappedSuperclass //also tried without this - same error
public class Summary {
@Id
@Column(name = "id")
private long id;
@Column(name = "title")
private String title;
//rest of class etc.
}
@Entity
@Table(name = "TRANSCRIPTS")
public class Detail extends Summary {
@Id
@Column(name = "fullText")
private String fullText;
//rest of class etc.
}
当我尝试并使用该层次结构中获取数据,我相处的
Unknown column 'DTYPE'
所以它在寻找一个descriminator列线的错误。我还没有设置,因为它不是那种关系。
有没有一种不同的方式可以在JPA中映射此摘要/详细信息关系?或者我应该放弃类继承,并且有两个单独的不相关的类,一个表示摘要数据,一个表示全部数据(并重新定义摘要字段)。
谢谢。
所以我只需要此列存在,它没有做什么? – ssloan
它将帮助toplink了解数据库表中的哪一行属于您的类中的哪个实体。它将包含您将在@DiscriminatorValue注释中输入的生成值或值。它称为鉴别器列。 –
但是每行都与两个类有关 - 类表示相同的数据项,只是它的一个子集。这不是像表1代表一般人,表2代表教师,我希望为教师提供一个班级和一个班级。所以就数据库而言,没有任何区别。所有行在此列中都具有相同的值。 – ssloan