持久化扩展实体的非实体类(jpa) - 例如?

时间:2010-02-22 17:36:59

标签: java inheritance jpa persistence

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";
    }
}

2 个答案:

答案 0 :(得分:2)

再次阅读该链接。 “实体类必须遵循以下要求:  *该类必须使用javax.persistence.Entity注释进行注释。“

如果某个类是非实体,那么它是非实体,因此不会作为实体持久化。任何可持续的东西都必须标记为这样,因此将您的子类标记为实体,并将您不想保留的字段标记为“瞬态”

答案 1 :(得分:2)

相关问题