我有一个用@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以防止在数据库中创建额外的不必要的条目?我可能会错过重要的事情吗?
答案 0 :(得分:1)
为了避免持久化B
的实例,您不需要使用@Transient
(用于标记非持久性的字段/属性)来注释它,而是避免注释它与@Entity
或只是不列出在您的persistence.xml文件中。
此外,您必须确保您的代码永远不会尝试保留此类型,否则将抛出异常。