我对Hibernate有挑战。我需要实现一个Table
,其中包含以下数据:
city, country
这两列也适用于AnotherTable
。
现在我需要一个解决方案,我们不为公共字段创建表,但是当我们从其他表中获取数据时,应该可以使用公共数据。
请就此概念提出建议和建议。
答案 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
}
使用这种方法不会为公共字段生成单独的表,但所有表都将包含公共字段本身。