坚持没有属性的实现

时间:2014-11-09 12:40:39

标签: java jpa entity

鉴于以下类和接口,我想知道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类中,它可以包含PlusOperationMinusOperation,并且这些类都没有使用@Entity注释,因为它们没有任何需要持久化的属性但它们各不相同。 JPA如何处理这个问题?持久保存Function对象时(和“幕后”)会使用正确的operator实现标记Operation属性吗?

1 个答案:

答案 0 :(得分:0)

只需添加一个JPA AttributeConverter即可存储"运算符"字段为String或Integer。这样一来,这个其他类型(不是一个实体)是否具有自己的任何属性并不重要。然后,转换器负责决定持久化的内容以及检索方式。