Étendre entité JPA pour ajouter des attributs et de la logique
J'ai besoin de savoir si il est possible d'ajouter des attributs et des comportements de certains POJO JPA entité (à l'aide de hibernate fournisseur) par extension, puis de faire l'entityManager pour retourner les objets étendus au lieu de simplement pojo entitys, comme les exemples suivants:
POJO Entité JPA
@Entity
@Table("test")
public class Test implements Serializable {
}
Classe Étendue
public class ExtendedTest extends Test {
...
}
Extraction Étendue de la Classe des objets
List<ExtendedTest> extendedList = entityManager.createNamedQuery("ExtendedTest.findByFoo").setParameter("foo", "bar").getResultList();
L'autre voie possible que je suis l'évaluation est l'extension de fonctionnalité avec une entité composite et de déléguer tous les setters et getters, mais cela pourrait signifier beaucoup de travail avec d'énormes tables:
public class ExtendedTest2 {
private Test test;
public ExtendedTest2(Test test) {
this.test = test;
}
public getFoo() {
return test.getFoo();
}
public getBar() {
return test.getBar();
}
...
}
Toutes les suggestions seront très appréciés.
Je ne pense pas que est possible que vous vous ferez un plaisir de mettre votre logique et d'autres attributs dans la classe d'entité.
Je l'ai fait peut ajouter d'autres attributs et de la logique de ma classe d'entité, mais pas "heureux", mon idée est de garder des entités telles que les POJO et pour tenir seulement le tableau de représentation des attributs, en fait, c'est précisément la raison pour laquelle j'ai créer cette question en premier lieu.
Je l'ai fait peut ajouter d'autres attributs et de la logique de ma classe d'entité, mais pas "heureux", mon idée est de garder des entités telles que les POJO et pour tenir seulement le tableau de représentation des attributs, en fait, c'est précisément la raison pour laquelle j'ai créer cette question en premier lieu.
OriginalL'auteur jmoreira | 2012-09-24
Vous devez vous connecter pour publier un commentaire.
À l'aide de
@Inheritance
ou
@MappedSuperclass
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
annotations dans la classe enfant, pas le parentJuste pour la référence: lors de l'utilisation de
@Entity
sur une classe abstraite, et chaque entité dérivée doit créer son propre tableau, dans ce cas, vous devez utiliser@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
sur le résumé parent table!OriginalL'auteur Ilya