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 :

Problème de cascade avec une joined-class


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut Problème de cascade avec une joined-class
    Hello,

    J'ai deux entités:
    RawMessage
    DecapMessage

    Tout d'abords, je sauve un RawMEssage, sans DecapMessage.
    Par la suite, j'afgffecte une DecapMessage à mon RawMessage. A ce moment là, je voudrais saver mon RawMessage de façon à ce que hibernate créé un DecapMessage. (genre cascade).
    Le problème, c'est qu'on ne peut pas mettre de cascade dans une joined-class, ce n'est pas automatique?

    J'espère être clair.

    Donc, je n'ai aucune erreur, tout se passe bien, mais aucun DecapMessage n'est créé... Pourquoi?

    Mon mapping:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <hibernate-mapping package="ch.ff.asdf.eascia">
        <class name="RawMessage" table="raw_msg">
        ...
        <joined-subclass name="DecapMessage" table="decap_msg">
                <key column="fkRawMessage"/>
        ......
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rawMessage.setDecapMessage(decapMessage);
    session.saveOrUpdate(rawMessage);

  2. #2
    Membre expérimenté Avatar de mOuLi
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Je suis assez surpris de l'utilisation de "joined-subclass" dans un tel cas de figure : ça se justifierait plus si ta classe DecapMessage héritait de RawMEssage.

    A mon avis, ça fonctionnerait mieux (et ce sera plus cohérent) de relier tes classes par un lien du type one-to-one ou many-to-one et, à ce moment là, tu pourras définir un attribut cascade.

  3. #3
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    C'est le cas, j'ai oublié de le préciser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class DecapMessage extends RawMessage{

  4. #4
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    J'ai suivi ton conseil, j'ai enlevé le extends et fait 2 mappings avec une many-to-one

    Merci

  5. #5
    Membre expérimenté Avatar de mOuLi
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Dans ce cas, je vois 2 possibilités :
    * Soit il n'y a qu'une relation d'héritage et je ne vois pas à quoi sert l'accesseur "setDecapMessage", il suffirait d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RawMessage rawMessage = new DecapMessage();
    (...)
    session.saveOrUpdate(rawMessage);
    pour que les 2 tables soient alimentées directement.

    * Soit il y a une relation d'héritage ainsi qu'une association et, dans ce cas, le mapping est incomplet et il faut rajouter un one-to-one ou un many-to-one (avec la cascade).

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

Discussions similaires

  1. [WPF] Problème de binding avec une classe perso
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 12/04/2010, 18h45
  2. Réponses: 3
    Dernier message: 07/07/2008, 23h03
  3. Problème d'héritage avec une classe abstraite
    Par Ph.denis dans le forum C++
    Réponses: 7
    Dernier message: 22/03/2008, 10h37
  4. Problème avec une sous classe de Graphics2D
    Par Virgile le chat dans le forum 2D
    Réponses: 1
    Dernier message: 16/06/2007, 02h59
  5. Réponses: 8
    Dernier message: 16/10/2006, 12h28

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