toplinkjpa继承-摘要/细节关系

h9vpoimq  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(273)

我在一个webapp中使用toplinkjpa,我只想将一个表Map到一个类层次结构。我希望有一个类代表大部分数据,还有一个类继承自该类(因此它获得了超类的所有字段,再加上几个其他的包含大量数据的字段)。我不想一直都有大量的数据,不想把它们保存在请求对象中等等。我只想在有人选择了其中一个摘要时才有大量的数据。我已经设置了如下的类(简化为一个例子)。

@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'

所以它在寻找一个描述符列。我还没有安排,因为这不是那种关系。
有没有其他方法可以在jpa中Map这个摘要/细节关系?或者我应该放弃类继承而使用两个独立的无关类,一个表示摘要数据,另一个表示完整数据(并重新定义摘要字段)。
谢谢。

vfwfrxfs

vfwfrxfs1#

数据类型toplink试图访问的鉴别器列可以在实体之间进行选择,如果将该列添加到表架构中,它将开始工作。
数据类型是数据库中的整数类型列。
您可以使用以下代码段指定自己的鉴别器列:

@Entity
@DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.INTEGER)
@DiscriminatorValue("1")
class TestClass {}

这是给你的一些文件http://www.oracle.com/technetwork/middleware/ias/toplink-jpa-annotations-096251.html#chdjhiag

相关问题