Spécification JPA unis
Les entités peuvent s'étendre non-classes d'entité ainsi que les classes d'entité, et non les classes d'entité peut étendre les classes d'entité.
@javax.la persistance.MappedSuperclass annotation vous permet de définir ce type de cartographie
@MappedSuperclass
public class MyThing implements Serializable {
private int myNumber;
private String myData;
// getter's and setter's
}
Et
@Entity
@Table(name="MY_THING")
public class MyThingEntity extends MyThing {
}
Comme l'a dit par la spécification JPA
Le MappedSuperclass annotation désigne une classe dont les informations de mappage est appliquée aux entités qui héritent de celui-ci.
Et
Une classe désignée par la MappedSuperclass annotation peut être défini de la même manière comme une entité, sauf que les mappages ne s'appliquent qu'à ses sous-classes depuis aucune table n'existe pour le mappé super-classe elle-même.
Si vous avez besoin de remplacer certains biens définis par MyThing, utilisez @AttibuteOverride (lorsque vous voulez remplacer une seule propriété) ou @AttibuteOverrides (lorsque vous voulez remplacer plus d'une propriété)
@Entity
@Table(name="MY_THING")
@AttributeOverride(name="myData", column=@Column(name="MY_DATA"))
public class MyThingEntity extends MyThing {
}
Si vous ne voulez pas changer votre classe de base, vous pouvez utiliser le format xml pour le définir comme @MappedSuperClass
Attention: par défaut, le fournisseur de persistance dans le répertoire META-INF pour un fichier nommé orm.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 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
<mapped-superclass class="MyThing">
</mapped-superclass>
</entity-mappings>
Rien d'autre. Si vous souhaitez remplacer une propriété, utilisez @AttributeOverride comme indiqué ci-dessus