hibernate中的继承,其中派生类没有关联的表

时间:2014-12-11 11:15:50

标签: java hibernate jpa

我正在为需要代表报告的应用程序编写实体,所有这些报告都有一些常见的字段,如:报告的名称,期间等。所有这些报告都包含具有不同列的表(您可以将其视为excel表中的表示)。到目前为止,我已经设计了我的数据库表,其中所有报告的公共字段将存储在父表中,并且对于每个报告,将存在另一个包含多个表的表,这些表将存储特定于每个报告的数据。在数据库方面,这个设计对我来说很好。 在为hibernate创建实体时,我想创建一个包含公共字段的父Report类。此Report类必须由所有特定报告类继承,并且将在派生类中定义更多字段,这些字段将特定于每个报告。这些字段将映射到子表中的列。 我研究了单表继承,但问题是我无法定义任何分隔符,@ MappedSuperclass似乎也没有解决方案,因为我的父类需要映射到表。

实体类必须如下所示;

public class Report // maps to parent table
{
  private Integer reportId;
  private String reportName;
}

public class ReportAData // maps to child table
{
  private Date column1;
  private String column2;
}

public class ReportA extends Report // does not map to any table
{
  private list<ReportARecord> records;
}

任何人都可以建议我该怎么做。

2 个答案:

答案 0 :(得分:0)

TABLE_PER_CLASS继承策略听起来像你想要的。请查看this blog post示例。

基本上,您将为Report提供一个表,并为每个子类提供一个表,该表具有Report表的外键和所有其他特定数据。

答案 1 :(得分:0)

我使用@Entity管理它,即使是没有表的类:

@Entity
@Table(name = "REPORT")
@Inheritance(strategy = InheritanceType.JOINED)
public class Report // maps to parent table
{
  private Integer reportId;
  private String reportName;
}

@Entity
public class ReportA extends Report // does not map to any table
{
  private list<ReportARecord> records;
}