使用@Transient注释实体

时间:2013-11-25 19:56:09

标签: java inheritance jpa persistence

我有一个用@Entity注释的类,因此存储在数据库中。现在我想要做的是扩展它,但是子类不应该被持久化:

@Entity(name = "A")
public abstract class A {

    private String field;

    public String getField() {
        return field;
    }

    public abstract void print();
}

public class B extends A {

    @Override
    public void print() {
        System.out.println(getField());
    }
}

为什么我不能用@Transient注释B以防止在数据库中创建额外的不必要的条目?我可能会错过重要的事情吗?

1 个答案:

答案 0 :(得分:1)

为了避免持久化B的实例,您不需要使用@Transient(用于标记非持久性的字段/属性)来注释它,而是避免注释它与@Entity或只是不列出在您的persistence.xml文件中。

此外,您必须确保您的代码永远不会尝试保留此类型,否则将抛出异常。