Chapter 33. Table per Class inheritance in EJB3 Entities

The EJB3 specification allows you to define entities that inherit from one another. The inheritance
relationships can be reflected in queries as well. So, if you queried based on the base class, the
query is polymorphic.

This tutorial uses the table per class strategy to map an inheritance relationship of
org.jboss.tutorial.tableperinheritance.bean.Pet, which is the base class for
org.jboss.tutorial.tableperinheritance.bean.Cat and org.jboss.tutorial.tableperinheritance.bean.Dog.

With the table per class strategy there is a table per class in the hierarchy, and each table has
every single property that particular class will persist.

Note

Important

Because of a bug in HSQL, this tutorial does not work against the HSQL DB (which
JBoss ships by default). Till this is fixed, running the client is not possible.
Alternately, you can configure a datasource to use some other database and then
use that datasource in the persistence.xml

Make sure the "default" server configuration of JBossAS-5.x is running

$ ant

Maven Users: Make sure the AS is not running.

$ mvn clean install -PRunSingleTutorial

View the tables and rows:

You can view the tables created by JBoss by going to the
Hypersonic Service,
scrolling down to the startDatabaseManager button and clicking it.
A Hypersonic SQL window will be minimized, but you can open it up to look at the tables and do queries.