鉴于以下类和接口,我想知道JPa如何处理它:
public interface Operator{
public String getOperator();
}
让我留下来,然后我有两个这个类的实现:
public class PlusOperation implements Operator, Serializable {
public String getOperator(){
return "+";
}
}
和
public class MinusOperation implements Operator, Serializable {
public String getOperator(){
return "-";
}
}
有一个标记为@Entity
的类,其属性为Operator
:
@Entity
public class Function {
@Id @GeneratedValue
private Long id;
private Operator operator;
// Other methods & properties omitted for clarity
}
因此,在Function类中,它可以包含PlusOperation
或MinusOperation
,并且这些类都没有使用@Entity
注释,因为它们没有任何需要持久化的属性但它们各不相同。 JPA如何处理这个问题?持久保存Function
对象时(和“幕后”)会使用正确的operator
实现标记Operation
属性吗?
答案 0 :(得分:0)
只需添加一个JPA AttributeConverter即可存储"运算符"字段为String或Integer。这样一来,这个其他类型(不是一个实体)是否具有自己的任何属性并不重要。然后,转换器负责决定持久化的内容以及检索方式。