IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Héritage, cast et persistence


Sujet :

Hibernate Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Par défaut Héritage, cast et persistence
    Bonjour

    Je ne sais pas si ma demande est saugrenue et/ou idiote mais je vous la soumets quand même:

    - J'ai une classe POJO avec le mapping hibernate adéquat sur une de mes tables: ClassPojo
    - Je dois faire du CRUD sur cette table: je dispose d'un framework séparant les couches métier et interface et j'utilise des JSP.
    - J'utilise une classe de type "helper" qui me permet de renseigner les champs de ma JSP: ClassHelper

    Ma ClassHelper a les même attributs que ma ClassPojo plus quelques attributs supplémentaires donc pour éviter la duplication inutile je décide que ClassHelper va étendre ClassPojo.

    Arrivé là, j'aimerais sauver en base ma ClassHelper (qui est une ClassPojo) mais il y a un problème:

    je fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    persistenceManager.saveOrUpdate((ClassPojo)instanceDeClassHelper);
    et il me dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unknown entity: com.[...].business.databeans.ClassHelper
    Comment faire pour que ça passe ? Il y a un truc tout con à faire que j'ai pas vu ? ou alors j'ai fais n'importe quoi, je dois bien séparer mes 2 objets car faisant partie de couches différentes (duplication des attributs) ?

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    • Tu veux sauvegarder ta classe Helper (tous les attributs) :


    IL faut que ta classe Helper est elle aussi un mapping.


    • Tu veux sauvegarder ta classe Helper (juste les attributs de classPojo) :


    Essaye de passer par une variable entre les 2 (normalement ca ne change rien du moins comme ca je ne vois pas ce que ca changerait), genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ClassPojo cp = (ClassPojo)instanceClassHelper;
    persistenceManager.saveOrUpdate(cp);

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Par défaut
    Merci pour ta réponse.

    En effet, il s'agit bien du 2ème cas.

    Et le code que tu proposes renvoie la même erreur... Il s'agit bien d'une MappingException:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.hibernate.MappingException: Unknown entity: com.[...].business.databeans.ClassHelper
    Ce qui est logique vu que le programme essaie de faire persister un objet non mappé.

    Je ne comprends pas pourquoi je ne peux pas caster ma ClassHelper en ClassPojo (qui, elle, est bien mappée)

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Le cast ne change rien au problème. Après cast, ton objet n'a pas changé, c'est juste ta référence vers cet objet qui est différente ...
    Hibernate va se baser sur la classe de l'objet que tu lui donnes, et là c'est donc normal qu'il ne retrouve pas ses petits ...

    Je ne pense pas qu'il y ait de solution à ton problème sauf à dupliquer entre ClassePojo et ClasseHelper ...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Par défaut
    OK merci. Je complique les choses pour rien. J'ai écrit le mapping de ma ClassHelper et c'est bon.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [héritage] Problème de cast
    Par mambo dans le forum Visual C++
    Réponses: 7
    Dernier message: 16/08/2006, 16h32
  2. héritage et casting
    Par dinver dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2005, 23h23
  3. Utilisation de cast dans de l'héritage
    Par dreamanoir dans le forum C++
    Réponses: 4
    Dernier message: 21/02/2005, 21h01
  4. [héritage] cast avec le type de base
    Par Lere dans le forum C++
    Réponses: 6
    Dernier message: 16/09/2004, 18h21
  5. [DP][héritage]sous-casting dynamique
    Par Le prophete dans le forum Général Java
    Réponses: 4
    Dernier message: 20/08/2004, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo