JPA教程指出,可以有一个扩展实体类的非实体:
实体可以扩展实体和 非实体类和非实体 类可以扩展实体类。 - http://java.sun.com/javaee/5/docs/tutorial/doc/bnbqa.html
是否可以坚持这样的结构?
我想这样做:
@Entity
abstract class Test { ... }
class FirstConcreteTest extends Test { ... } // Non-ntity
class SecondConcreteTest extends Test { ... } // Non-entity
Test test = new FirstConcreteTest();
em.persist(test);
我希望它能够将映射在抽象Test上的所有字段保存到所有具体类(第一个和第二个)的公共数据库表中,使第一个和第二个测试类的所有字段都不存在(这些可以包含类似的东西) EJB,jdbc池等)。
还有一个奖金问题。是否有可能持久保留抽象财产?
@Entity
abstract class Test {
@Column
@Access(AccessType.PROPERTY)
abstract public String getName();
}
class SecondConcreteTest extends Test {
public String getName() {
return "Second Concrete Test";
}
}
答案 0 :(得分:2)
再次阅读该链接。 “实体类必须遵循以下要求: *该类必须使用javax.persistence.Entity注释进行注释。“
如果某个类是非实体,那么它是非实体,因此不会作为实体持久化。任何可持续的东西都必须标记为这样,因此将您的子类标记为实体,并将您不想保留的字段标记为“瞬态”
答案 1 :(得分:2)
@Entity
(请参阅Abstract Entities和/或Requirements for Entity Classes)。@Transient
(请参阅Persistent Fields和/或Persistent Properties)。@Transient
。