Hibernate继承问题与普通数据不创建表

时间:2018-02-21 06:58:06

标签: hibernate jpa inheritance

我对Hibernate有挑战。我需要实现一个Table,其中包含以下数据:

city, country

这两列也适用于AnotherTable

现在我需要一个解决方案,我们不为公共字段创建表,但是当我们从其他表中获取数据时,应该可以使用公共数据。

请就此概念提出建议和建议。

1 个答案:

答案 0 :(得分:0)

您的解决方案是使用InheritanceType.TABLE_PER_CLASS创建实体。

首先创建一个包含所有公共字段的基础entity,并使其abstract以防止实例化而不扩展:

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
@Getter
public abstract class BaseTable {
    @Id @GeneratedValue
    private Long id;
    @Setter
    private String city, country;
}

然后将此类扩展为:

@Entity
@Getter
public class FirstTable extends BaseTable {
    @Setter
    private String tableString;
    // + other table specific fields
}

注意我将名称Table更改为FirstTable,因为Table是保留字)

@Entity
@Getter
public class AnotherTable extends BaseTable {
    @Setter
    private String anotherTableString;
    // + other table specific fields
}

使用这种方法不会为公共字段生成单独的表,但所有表都将包含公共字段本身。