我正在研究JPA项目.我有一个ExportProfile对象:
@Entity
public class ExportProfile{
@Id
@GeneratedValue
private int id;
private String name;
private ExtractionType type;
//...
}
ExtractionType是由几个类实现的接口,每个类用于不同的提取类型,这些类是单例.
因此type是对singleton对象的引用.我的数据库中没有ExtractionType表,但我必须保留导出配置文件的提取类型.
如何使用JPA持久保存ExportProfile对象,保存对类型对象的引用?
注意:未定义ExtractionType实现的数量,因为可以随时添加新实现.我也使用Spring,这可以帮忙吗?
解决方法:
这是一个想法:创建一个ExtractionTypeEnum,一个枚举,为每个实现ExtractionType的可能单例提供一个元素,并将其存储为实体中的字段,而不是ExtractionType.稍后,如果您需要检索与ExtractionTypeEnum值对应的单例,则可以实现为每种情况返回正确单例的工厂:
public ExtractionType getType(ExportProfile profile) {
switch (profile.getExtractionTypeEnum()) {
case ExtractionTypeEnum.TYPE1:
return ConcreteExtractionType1.getInstance();
case ExtractionTypeEnum.TYPE2:
return ConcreteExtractionType2.getInstance();
}
}
在上面,我假设ConcreteExtractionType1和ConcreteExtractionType2都实现ExtractionType.
标签:java,spring,jpa,hibernate
来源: https://codeday.me/bug/20190709/1415418.html