Persisting non-entity class that extends an entity (jpa) - example?

Posted by Michal Minicki on Stack Overflow See other posts from Stack Overflow or by Michal Minicki
Published on 2010-02-22T17:36:58Z Indexed on 2011/01/08 13:53 UTC
Read the original article Hit count: 199

Filed under:
|
|
|

The JPA tutorial states that one can have a non-entity that extends entity class:

Entities may extend both entity and non-entity classes, and non-entity classes may extend entity classes. - http://java.sun.com/javaee/5/docs/tutorial/doc/bnbqa.html

Is it possible to persist such structure?

I want to do this:

@Entity
abstract class Test { ... }

class FirstConcreteTest extends Test { ... } // Non-ntity
class SecondConcreteTest extends Test { ... } // Non-entity

Test test = new FirstConcreteTest();

em.persist(test);

What I would like it to do is to persist all fields mapped on abstract Test to a common database table for all concrete classes (first and second), leaving all fields of first and second test class unpersisted (these can contain stuff like EJBs, jdbc pools, etc).

And a bonus question. Is it possible to persist abstract property too?

@Entity
abstract class Test {

    @Column
    @Access(AccessType.PROPERTY)
    abstract public String getName();

}

class SecondConcreteTest extends Test {
    public String getName() {
        return "Second Concrete Test";
    }
}

© Stack Overflow or respective owner

Related posts about java

Related posts about inheritance