2010-11-25 8 views
3

J'ai généré des fichiers de mappage et des POJO dans NetBeans au lieu de les écrire moi-même. Est-il possible d'utiliser une classe dérivée dans un lieu d'une classe héritée? Un exemple serait quelque chose comme ceci:Classes Java dérivées de Hibernate pour les tables

Person.hbm.xml - mapping file 

Person.java - generated class (strategy class per table) 

PersonExtended - class that extends Person.java 

Alors, quand je crée un nouvel objet:

PersonExtended personextended = new PersonExtended(<parameters>); 

ce que je pourrais appeler des méthodes telles que:

session.save(personextended) or session.delete(personextended)

?

Ce scénario est-il sensible ou devrais-je ajouter du code dont j'ai besoin dans une classe générée? Merci d'avance pour votre aide ou vos suggestions.

------- -------- Modifier

Dans ma base de données, je n'ai pas la structure typique qui serait possible d'être mappée comme un héritage. Je veux simplement garder les méthodes supplémentaires séparées de la classe java principale pour une entité.

Cordialement, sass.

Répondre

2

Vous devrez indiquer à Hibernate comment vos classes étendues doivent être mappées via un fichier hbm.xml. Selon la stratégie que Hibernate doit utiliser pour le polymorphisme, vous devrez peut-être affecter une valeur de discriminateur. Il existe 3 stratégies différentes lors de l'utilisation de sous-classes appelées "table par classe" "table par classe concrète" et "table par sous-classe".

Vous pouvez définir des sous-classes dans le fichier HBM-xml en utilisant les <subclass> ou <joined-subclass> éléments

si vous correctement défini votre fichier hbm.xml vous pouvez utiliser session.save(new PersonExtended()) ou équiv.

vous pouvez lire sur ce ici: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html

espoir qui a aidé ..

+0

Salut, merci beaucoup pour la réponse. Mais je ne suis pas sûr de l'utilisation appropriée de cela. Si je devais générer automatiquement les classes d'hibernation à partir d'une base de données tout en ayant ces mappages dans le fichier de mappage, les sous-classes seraient-elles également générées? Ou seulement les classes de base le feraient? – sass

Questions connexes