Si può anche fare questo senza usare le sottoclassi se si utilizzano due diverse unità di persistenza.
Ciascuna unità di persistenza può specificare un insieme univoco di mapping (incluso il nome della tabella). Un modo per ottenere ciò è creare due file orm.xml. In persistence.xml avrete bisogno di qualcosa di simile:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0">
<persistence-unit name="mapping-1">
. . .
<mapping-file>orm-1.xml</mapping-file>
. . .
</persistence-unit>
<persistence-unit name="mapping-2">
. . .
<mapping-file>orm-2.xml</mapping-file>
. . .
</persistence-unit>
</persistence>
Poi entro orm-1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
version="1.0">
<package>mypackage</package>
<entity name="myEntity" class="myClass">
<table name="TABLE1">
</table>
</entity>
</entity-mappings>
E all'interno orm-2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
version="1.0">
<package>mypackage</package>
<entity name="myEntity" class="myClass">
<table name="TABLE2">
</table>
</entity>
</entity-mappings>
È Sarà necessario creare una EntityManagerFactory separata per ogni PersistenceUnit (probabilmente non ciò che si desidera), ma se si volesse utilizzare la stessa classe su diversi database (con nomi di tabelle differenti), questa sarebbe una strada da percorrere.
Funziona, grazie! Tuttavia, per Toplink, TABLE_PER_CLASS non è supportato. Ho provato il metodo @mappedSuperClass e funziona pure. –
Per chi non è sicuro di Ereditarietà rispetto a MappedSuperClass, vengono descritti e confrontati molto bene qui: http://stackoverflow.com/a/9669719/2278186 – SatA