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 :

[Hibernate] Problème sauvegarde


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 15
    Points
    15
    Par défaut [Hibernate] Problème sauvegarde
    Bonjour à tous, j'ai un problème au niveau de la sauvegarde d'un objet. Je m'explique.

    J'ai un objet person et un objet account. L'objet person contient un objet account.

    Mon problème c'est que j'arrive à sauvegarder mon objet person à condition d'avoir déja sauvegarder mon objet account alors que je voudrais juste lancer la sauvegarde de person.



    Voici mon fichier de mapping pour person:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 13 oct. 2009 12:29:25 by Hibernate Tools 3.2.1.GA -->
    <hibernate-mapping>
    <class name="dant.model.Person" table="person" catalog="qqcm">
    <id name="id" type="int">
    <column name="id" />
    <generator class="identity" />
    </id>

    <many-to-one name="account" column="idAccount" unique="true" not-null="true" class="dant.model.Account"/>

    </class>
    </hibernate-mapping>


    Voici mon fichier de mapping pour account :

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 13 oct. 2009 12:29:25 by Hibernate Tools 3.2.1.GA -->
    <hibernate-mapping>
    <class name="dant.model.Account" table="account" catalog="qqcm">
    <id name="id" type="int">
    <column name="id" />
    <generator class="identity" />
    </id>
    <property name="firstname" type="string">
    <column name="firstname" length="50" />
    </property>
    <property name="lastname" type="string">
    <column name="lastname" length="50" />
    </property>
    <property name="login" type="string">
    <column name="login" length="50" />
    </property>
    <property name="mail" type="string">
    <column name="mail" length="150" />
    </property>
    <property name="password" type="string">
    <column name="password" length="20" />
    </property>
    </class>
    </hibernate-mapping>


    Voici le code que j'utilise pour sauvegarder et qui fonctionne :

    Account monCompte = new Account("Fehrenbacher","Michael","lol","lol@free.fr","inconue");
    OutilsHibernate.Sauvegarder(monCompte);

    Person moi = new Person(monCompte);
    OutilsHibernate.Sauvegarder(moi);

    Voici le code que je voudrais mettre :

    Account monCompte = new Account("Fehrenbacher","Michael","lol","lol@free.fr","inconue");

    Person moi = new Person(monCompte);
    OutilsHibernate.Sauvegarder(moi);

    Voila j'espère que vous pourrez m'aider car je suis sur un gros programme et sa me bloque dans des cas plus complexe.

  2. #2
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par libery Voir le message
    Bonjour à tous, j'ai un problème au niveau de la sauvegarde d'un objet. Je m'explique.

    J'ai un objet person et un objet account. L'objet person contient un objet account.

    Mon problème c'est que j'arrive à sauvegarder mon objet person à condition d'avoir déja sauvegarder mon objet account alors que je voudrais juste lancer la sauvegarde de person.



    Voici mon fichier de mapping pour person:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 13 oct. 2009 12:29:25 by Hibernate Tools 3.2.1.GA -->
    <hibernate-mapping>
    <class name="dant.model.Person" table="person" catalog="qqcm">
    <id name="id" type="int">
    <column name="id" />
    <generator class="identity" />
    </id>

    <many-to-one name="account" column="idAccount" unique="true" not-null="true" class="dant.model.Account"/>

    </class>
    </hibernate-mapping>


    Voici mon fichier de mapping pour account :

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 13 oct. 2009 12:29:25 by Hibernate Tools 3.2.1.GA -->
    <hibernate-mapping>
    <class name="dant.model.Account" table="account" catalog="qqcm">
    <id name="id" type="int">
    <column name="id" />
    <generator class="identity" />
    </id>
    <property name="firstname" type="string">
    <column name="firstname" length="50" />
    </property>
    <property name="lastname" type="string">
    <column name="lastname" length="50" />
    </property>
    <property name="login" type="string">
    <column name="login" length="50" />
    </property>
    <property name="mail" type="string">
    <column name="mail" length="150" />
    </property>
    <property name="password" type="string">
    <column name="password" length="20" />
    </property>
    </class>
    </hibernate-mapping>


    Voici le code que j'utilise pour sauvegarder et qui fonctionne :

    Account monCompte = new Account("Fehrenbacher","Michael","lol","lol@free.fr","inconue");
    OutilsHibernate.Sauvegarder(monCompte);

    Person moi = new Person(monCompte);
    OutilsHibernate.Sauvegarder(moi);

    Voici le code que je voudrais mettre :

    Account monCompte = new Account("Fehrenbacher","Michael","lol","lol@free.fr","inconue");

    Person moi = new Person(monCompte);
    OutilsHibernate.Sauvegarder(moi);

    Voila j'espère que vous pourrez m'aider car je suis sur un gros programme et sa me bloque dans des cas plus complexe.
    je doit voir ta methode Sauvegarder pour pouvoir t'aider

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 15
    Points
    15
    Par défaut Méthode sauvegarder
    Voici la méthode sauvegarder :

    public static boolean Sauvegarder(Serializable monObjet)
    {
    try
    {
    _tx = (Transaction) getSession().beginTransaction();

    // Je sauve mon objet serializable
    getSession().save(monObjet);

    // Je réalise la transaction
    getTx().commit();

    return true;
    }
    catch(org.hibernate.TransactionException e)
    { /*Outils.Message("Une erreur est survenu lors de la sauvegarde : " + e.getMessage());*/ return false; }


    }

  4. #4
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par libery Voir le message
    Voici la méthode sauvegarder :

    public static boolean Sauvegarder(Serializable monObjet)
    {
    try
    {
    _tx = (Transaction) getSession().beginTransaction();

    // Je sauve mon objet serializable
    getSession().save(monObjet);

    // Je réalise la transaction
    getTx().commit();

    return true;
    }
    catch(org.hibernate.TransactionException e)
    { /*Outils.Message("Une erreur est survenu lors de la sauvegarde : " + e.getMessage());*/ return false; }


    }
    essaie avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
     try
            {
                //récupère la session
               Session session=getSession();
                _tx = session.beginTransaction();
     
                // Je sauve mon objet serializable
                session.save(monObjet);
     
                // Je réalise la transaction
                _tx.commit();
     
                return true;
            }

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Points : 170
    Points
    170
    Par défaut
    Bonjour,

    Tu peux rajouter l'option "default-cascade" dans ton mapping qui est par défaut à "none" en choisissant les opérations que tu veux mettre en place en cascade : https://www.hibernate.org/hib_docs/v...cadeStyle.html

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 15
    Points
    15
    Par défaut toujours pas
    je vient de tester sa ne marche toujours pas

    voila le début du message d'erreur que j'ai :

    INFO: Not binding factory to JNDI, no JNDI name configured
    Exception in thread "main" org.hibernate.PropertyValueException: not-null property references a null or transient value: dant.model.Person.account
    at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)

    Si ya besoins du message d'erreur complet je le met

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 15
    Points
    15
    Par défaut C'est good
    C'est bon j'ai rajouté un attribut dans mon association account

    le voici : cascade="save-update"

  8. #8
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut
    d'abord ,ce que j'ai compris est que chaque personne peut avoir plusieurs accounts; donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <many-to-one name="account" column="idAccount" unique="true" not-null="true" class="dant.model.Account"/>
    est false(one-to-many)
    ou bien tu peut utiliser many-to-one dans le fichoer de mapping de account puis ajoute l'attribut cascade="save-update" et ça devrait marcher

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 15
    Points
    15
    Par défaut Merci
    J'oublais le merci LoL

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Points : 170
    Points
    170
    Par défaut
    Et le ?!

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 15
    Points
    15
    Par défaut Encore une question
    Je voudrais faire la mème chose que many to one avec cascade mais avec one to many

    voici le code en question :

    <set name="modules" table="module">
    <key column="idTeacher"/>
    <one-to-many class="dant.model.Module" />
    </set>

    je voudrais également que les créations ce propage

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 15
    Points
    15
    Par défaut Help me
    Personne n'a d'idée ?

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Points : 170
    Points
    170
    Par défaut
    Tout est dans la docs, il faut juste avoir le courage de lire... ce que je ne peux pas faire pour toi !

    http://docs.jboss.org/hibernate/stab...ional-join-12m

Discussions similaires

  1. [Hibernate] problème de sauvegarde
    Par ultimax dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/12/2005, 14h33
  2. [STRUTS/HIBERNATE] Problème d'exécution de requête
    Par mc_chicken dans le forum Hibernate
    Réponses: 5
    Dernier message: 21/10/2005, 09h27
  3. [Hibernate] problème d'insertion dans la base de données
    Par Willy7901 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 18/08/2005, 13h19
  4. [hibernate]Problème de récupération d'objet...
    Par roxx62 dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/07/2005, 11h36
  5. [plugin hibernate] problème d'installation
    Par slymira dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/06/2005, 13h06

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