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 :

Creation d'un objet : bags fixés à null


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut Creation d'un objet : bags fixés à null
    Bonjour,
    J'essaie de réaliser un bout de code permettant de creer, charger et supprimer des objets en hibernate (pas compliqué me direz vous, tout le monde fait ça).

    Mais voilà je me pose des questions !

    dans un premier temps je crée un objet utilisateur (voir le mapping ci dessous) eh puis j'essaie d'ajouter des objets dans les bags présents.

    Manque de pots, les bags sont de valeur "null"

    Alors j'ai concocté un bout de code, qui ne me plait pas mais qui marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    org.hibernate.Session session= OutilHibernate.getSessionFactory().openSession();
    org.hibernate.Transaction transaction1= session.beginTransaction();
    Utilisateur utilisateur=Utilisateur.creer("truc","muche", "machin","bidule", "chose", "ect");
    session.save(utilisateur);
    transaction1.commit();
    session.flush();
    session.clear();
     
    int id=utilisateur.getId();
     
    Criteria critere=session.createCriteria(Utilisateur.class);
    critere.add(Restrictions.eq("id", id));
    utilisateur=(Utilisateur)critere.uniqueResult();
    J'ai essayé avec un session.load mais ça ne fonctionne pas... mais c'est pas grave à la limite cela pourrait me convenir.

    Ce que je ne comprend pas pourquoi il faut vider la session, et recharger l'objet pour obtenir des listes (vides ce qui est normal) mais non nulles.

    Quelqu'un a-t-il une idée ?
    Merci


    voici un mapping objet vous verrez que j'utilise du lazy loading et des inverse = true là où il y en a besoin.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="bibliotheque.utilisateur.Utilisateur" table="Utilisateur">
            <id name="id" type="int">
                <column name="id" not-null="true"/>
                <generator class="native"/>
            </id>
            <property name="civilite" column="civilite" type="string" length="45" not-null="true"/>
            <property name="nom" column="nom" type="string" length="45" not-null="true"/>
            <property name="prenom" column="prenom" type="string" length="45" not-null="true"/>
            <property name="courriel" column="courriel" type="string" length="255" not-null="true"/>
            <property name="identifiant" column="identifiant" type="string" length="45" not-null="true"/>
            <property name="motPasse" column="motPasse" type="string" length="45" not-null="true"/>
            <property name="dateNaissance" column="dateNaissance" type="calendar"/>
            <property name="surnom" column="surnom" type="string" length="45"/>
            <many-to-one column="idUtilisateurCreateur" name="utilisateurCreateur" class="bibliotheque.utilisateur.Utilisateur" lazy="proxy"/>
            <many-to-one column="idUtilisateurModificateur" name="utilisateurModificateur" class="bibliotheque.utilisateur.Utilisateur" lazy="proxy"/>
            <property name="dateCreation" column="dateCreation" type="calendar"/>
            <property name="dateModification" column="dateModification" type="calendar"/>
            <bag name="listeUtilisateurDontEstCreateur" table="Utilisateur" lazy="true" inverse="true">
                <key column="idUtilisateurCreateur"/>
                <one-to-many class="bibliotheque.utilisateur.Utilisateur"/>
            </bag>
            <bag name="listeUtilisateurDontEstModificateur" table="Utilisateur" lazy="true" inverse="true">
                <key column="idUtilisateurModificateur"/>
                <one-to-many class="bibliotheque.utilisateur.Utilisateur"/>
            </bag>
            <bag name="listeEspaceDontEstCreateur" table="Espace" lazy="true" inverse="true">
                <key column="idUtilisateurCreateur"/>
                <one-to-many class="bibliotheque.utilisateur.Espace"/>
            </bag>
            <bag name="listeEspaceDontEstModificateur" table="Espace" lazy="true" inverse="true">
                <key column="idUtilisateurModificateur"/>
                <one-to-many class="bibliotheque.utilisateur.Espace"/>
            </bag>
            <bag name="listeUtilisateurXEspace" table="UtilisateurXEspace" lazy="true" inverse="true">
                <key column="idUtilisateur"/>
                <one-to-many class="bibliotheque.utilisateur.UtilisateurXEspace"/>
            </bag>
            <bag name="listeUtilisateurXEspaceDontEstCreateur" table="UtilisateurXEspace" lazy="true" inverse="true">
                <key column="idUtilisateurCreateur"/>
                <one-to-many class="bibliotheque.utilisateur.UtilisateurXEspace"/>
            </bag>
            <bag name="listeUtilisateurXEspaceDontEstModificateur" table="UtilisateurXEspace" lazy="true" inverse="true">
                <key column="idUtilisateurModificateur"/>
                <one-to-many class="bibliotheque.utilisateur.UtilisateurXEspace"/>
            </bag>
            <bag name="listeTable1" table="UtilisateurXTable1" inverse="true">
                <key column="idUtilisateur"/>
                <many-to-many column="idTable1" class="bibliotheque.utilisateur.Table1"/>
            </bag>
            <idbag name="listeTable2" table="UtilisateurXTable2">
                <collection-id column="id" type="int">
                    <generator class="native"/>
                </collection-id>
                <key column="idUtilisateur"/>
                <many-to-many column="idTable2" class="bibliotheque.utilisateur.Table2"/>
            </idbag>
        </class>
    </hibernate-mapping>

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Hello j'ai une petite amélioration à mon code, mais ce n'est pas parfait.
    à la place de
    j'ai remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.evict(utilisateur);
    Ce qui a pour résultat de n'enlever que l'objet créé plus haut au lieu d'envoyer toute la session en l'air.

    Mais je suis tout de même obligé de recharger mon objet (une requête de trop), donc je ne suis pas encore satisfait de la solution.

    Y en a-t-il parmis vous qui ont de meilleures idées ?

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

Discussions similaires

  1. [3.0][XAML] Création dynamique d'objets graphiques
    Par Yaugzebul dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 20/11/2006, 15h37
  2. Creation aléatoire d'objets
    Par belzeluc dans le forum C++
    Réponses: 1
    Dernier message: 25/04/2006, 22h45
  3. [debutant][erreur] pas un Objet ou valeur Null
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2006, 16h17
  4. conserver ma liste d'objets sans Pointeur Null ...
    Par comme de bien entendu dans le forum Général Java
    Réponses: 8
    Dernier message: 24/03/2006, 11h55
  5. Réponses: 5
    Dernier message: 08/01/2006, 23h42

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