我正在开发一个JPA项目。我有一个ExportProfile
对象:
@Entity
public class ExportProfile{
@Id
@GeneratedValue
private int id;
private String name;
private ExtractionType type;
//...
}
ExtractionType
是由几个类实现的接口,每个类用于不同的提取类型,这些类是单例。
所以type
是对单例对象的引用。我的数据库中没有ExtractionType
表,但我必须保留导出配置文件的提取类型。
如何使用JPA保留ExportProfile
对象,保存对type
对象的引用?
注意:未定义ExtractionType
实施的数量,因为可以随时添加新的实施。我也在使用Spring,这有帮助吗?
答案 0 :(得分:1)
这是一个想法:制作一个ExtractionTypeEnum
,一个包含一个元素的枚举,用于实现ExtractionType
的每个可能的单例,并将其存储为实体中的字段,而不是{{1} }。稍后,如果您需要检索与ExtractionType
值对应的单例,则可以实现为每种情况返回正确单例的工厂:
ExtractionTypeEnum
在上文中,我假设public ExtractionType getType(ExportProfile profile) {
switch (profile.getExtractionTypeEnum()) {
case ExtractionTypeEnum.TYPE1:
return ConcreteExtractionType1.getInstance();
case ExtractionTypeEnum.TYPE2:
return ConcreteExtractionType2.getInstance();
}
}
和ConcreteExtractionType1
都实现了ConcreteExtractionType2
。