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 - Débutant


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut Hibernate - Débutant
    Bonjour à tous,

    Je me lance pour la première fois dans Hibernate.
    et évidemment ça ne marche pas du premier coup....
    j'utilise eclipse3 et hibernate3

    voiçi l'erreur que j'ai qaund je lance une appli classe de test avec une métode main :

    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
     
    Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Could not parse mapping document from resource hibernatemapping/collaborateurs.hbm.xml
    Exception in thread "main" java.lang.ExceptionInInitializerError
    	at com.web.app.tools.HibernateUtil.<clinit>(HibernateUtil.java:16)
    	at com.web.app.test.EventManager.createAndStoreEvent(EventManager.java:22)
    	at com.web.app.test.EventManager.main(EventManager.java:14)
    Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource hibernatemapping/collaborateurs.hbm.xml
    	at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
    	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
    	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
    	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
    	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
    	at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
    	at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
    	at com.web.app.tools.HibernateUtil.<clinit>(HibernateUtil.java:12)
    	... 2 more
    Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping
    	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:502)
    	at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
    	... 9 more
    Caused by: org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".
    	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
    	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
    	at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
    	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
    	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    	at org.dom4j.io.SAXReader.read(SAXReader.java:465)
    	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499)
    	... 10 more
    voilà mon fichier hibernate.cfg.xml

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory name="Factory">
            <property name="hibernate.connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
            <property name="hibernate.connection.password">magicadm</property>
            <property name="hibernate.connection.url">jdbc:microsoft:sqlserver://pars001i0015:1433;DatabaseName=auguste_dev;SelectMethod=cursor</property>
            <property name="hibernate.connection.username">auguste</property>
            <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
            <!-- Mapping files -->
          <mapping resource="hibernatemapping/collaborateurs.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
    mon fichier collaborateurs.hbm.xml

    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.web.app.metiers">
      <class name="Collaborateurs" table="COLLABORATEURS_TR">
      	<property name="initiales">
      		<column name="INITIALES"></column>
      	</property>
      	<property name="nom">
      		<column name="NOM"></column>
      	</property>
      	<property name="prenom">
      		<column name="PRENOM"></column>
      	</property>
      </class>
    </hibernate-mapping>
    la classe metier à mapper :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
     
    package com.web.app.metiers;
     
    public class Collaborateurs {
     
    	String initiales = null;
    	String qualite = null;
    	String nom = null;
    	String prenom = null;
    	int numeroComptable = 0;
    	String fonction = null;
    	int equipe = 0;
    	String commentaire = null;
    	String assistance = null;
    	String typeBien = null;
    	String lancementDenonce = null;
    	String suiviCreation = null;
    	String suiviModification = null;
    	String dernierUtili = null;
    	String alias = null;
    	String codeLangue = null;
    	String repertoireUtil = null;
    	String ligneDirecte = null;
    	String codeReg = null;
    	String codeSite = null;
    	String codeSte = null;
    	String email = null;
    	String imprimPrinc = null;
    	int numAuto = 0;
    	String photo = null;
    	String actif = null;
     
    	public String getInitiales() {
    		return initiales;
    	}
    	public void setInitiales(String initiales) {
    		this.initiales = initiales;
    	}
    	public String getQualite() {
    		return qualite;
    	}
    	public void setQualite(String qualite) {
    		this.qualite = qualite;
    	}
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public String getPrenom() {
    		return prenom;
    	}
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
    	public int getNumeroComptable() {
    		return numeroComptable;
    	}
    	public void setNumeroComptable(int numeroComptable) {
    		this.numeroComptable = numeroComptable;
    	}
    	public String getFonction() {
    		return fonction;
    	}
    	public void setFonction(String fonction) {
    		this.fonction = fonction;
    	}
    	public int getEquipe() {
    		return equipe;
    	}
    	public void setEquipe(int equipe) {
    		this.equipe = equipe;
    	}
    	public String getCommentaire() {
    		return commentaire;
    	}
    	public void setCommentaire(String commentaire) {
    		this.commentaire = commentaire;
    	}
    	public String getAssistance() {
    		return assistance;
    	}
    	public void setAssistance(String assistance) {
    		this.assistance = assistance;
    	}
    	public String getTypeBien() {
    		return typeBien;
    	}
    	public void setTypeBien(String typeBien) {
    		this.typeBien = typeBien;
    	}
    	public String getLancementDenonce() {
    		return lancementDenonce;
    	}
    	public void setLancementDenonce(String lancementDenonce) {
    		this.lancementDenonce = lancementDenonce;
    	}
    	public String getSuiviCreation() {
    		return suiviCreation;
    	}
    	public void setSuiviCreation(String suiviCreation) {
    		this.suiviCreation = suiviCreation;
    	}
    	public String getSuiviModification() {
    		return suiviModification;
    	}
    	public void setSuiviModification(String suiviModification) {
    		this.suiviModification = suiviModification;
    	}
    	public String getDernierUtili() {
    		return dernierUtili;
    	}
    	public void setDernierUtili(String dernierUtili) {
    		this.dernierUtili = dernierUtili;
    	}
    	public String getAlias() {
    		return alias;
    	}
    	public void setAlias(String alias) {
    		this.alias = alias;
    	}
    	public String getCodeLangue() {
    		return codeLangue;
    	}
    	public void setCodeLangue(String codeLangue) {
    		this.codeLangue = codeLangue;
    	}
    	public String getRepertoireUtil() {
    		return repertoireUtil;
    	}
    	public void setRepertoireUtil(String repertoireUtil) {
    		this.repertoireUtil = repertoireUtil;
    	}
    	public String getLigneDirecte() {
    		return ligneDirecte;
    	}
    	public void setLigneDirecte(String ligneDirecte) {
    		this.ligneDirecte = ligneDirecte;
    	}
    	public String getCodeReg() {
    		return codeReg;
    	}
    	public void setCodeReg(String codeReg) {
    		this.codeReg = codeReg;
    	}
    	public String getCodeSite() {
    		return codeSite;
    	}
    	public void setCodeSite(String codeSite) {
    		this.codeSite = codeSite;
    	}
    	public String getCodeSte() {
    		return codeSte;
    	}
    	public void setCodeSte(String codeSte) {
    		this.codeSte = codeSte;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	public String getImprimPrinc() {
    		return imprimPrinc;
    	}
    	public void setImprimPrinc(String imprimPrinc) {
    		this.imprimPrinc = imprimPrinc;
    	}
    	public int getNumAuto() {
    		return numAuto;
    	}
    	public void setNumAuto(int numAuto) {
    		this.numAuto = numAuto;
    	}
    	public String getPhoto() {
    		return photo;
    	}
    	public void setPhoto(String photo) {
    		this.photo = photo;
    	}
    	public String getActif() {
    		return actif;
    	}
    	public void setActif(String actif) {
    		this.actif = actif;
    	}
     
     
    }
    ma classe HibernateUtil :

    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
     
    package com.web.app.tools;
     
    import org.hibernate.*;
    import org.hibernate.cfg.*;
     
    public class HibernateUtil {
        public static final SessionFactory sessionFactory;
     
        static {
            try {
                // Création de la SessionFactory à partir de hibernate.cfg.xml
                sessionFactory = new Configuration().configure().buildSessionFactory();
            } catch (Throwable ex) {
                // Make sure you log the exception, as it might be swallowed
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
        }
     
        public static final ThreadLocal session = new ThreadLocal();
     
        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }
    }
    et ma classe de test :

    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
     
    package com.web.app.test;
     
    import org.hibernate.Session;
     
    import com.web.app.metiers.Collaborateurs;
    import com.web.app.tools.HibernateUtil;
     
    public class EventManager {
     
        public static void main(String[] args) {
            EventManager mgr = new EventManager();
     
            if (args[0].equals("store")) {
                mgr.createAndStoreEvent("BMAR", "Bob", "Marley");
            }
     
            HibernateUtil.getSessionFactory().close();
        }
     
        private void createAndStoreEvent(String initiales, String nom, String prenom) {
     
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
     
            session.beginTransaction();
     
            Collaborateurs collaborateurs = new Collaborateurs();
            collaborateurs.setInitiales(initiales);
            collaborateurs.setNom(nom);
            collaborateurs.setPrenom(prenom);
     
            session.save(collaborateurs);
     
            session.getTransaction().commit();
        }
     
    }
    merci à tous ceux qui peuvent m'aider.....et aux autres aussi

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    a priori ton fichier de mapping collaborateurs est incorrect (par exemple il manque la propriété id...)

    si tu travailles avec eclipse, installe un des différents outils existants pour te faciliter la vie, comme les hibernate tools disponible sur le site d'hibernate

    tu pourras générer les fichiers de mapping automatiquement

    mais je te conseille de lire la doc hibernate pour comprendre ce que font ces outils

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    merci pour ta réponse.
    en fait j'ai déjà installé hibernate tools.
    le fichier collaborateurs.hbm.xml a été généré automatiquement.
    mais il le crée quasiment vierge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.web.app.metiers">
      <class name="Collaborateurs">
      </class>
    </hibernate-mapping>
    le reste c'est moi qui l'ai ajouté...
    oui je n'avais pas mis l'id car je n'ai pas d'id dans la table...
    est-il obligatoire ?
    en fait, la clé unique de la table est basée sur les initiales qui ne peuvent être en double.

    donc j'ai rajouté un int id dans la classe metier Collaborateurs.java ... mais bon je vois pas comment je vais pouvoir le faire mapper sur un id qui n'existe pas en base...

    quand je lance ma classe de teste, j'ai l'erreur suivante (elle me paraît logique d'ailleur) :

    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
     
    Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not fetch initial value for increment generator
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:107)
    	at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:44)
    	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
    	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
    	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
    	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
    	at $Proxy0.save(Unknown Source)
    	at com.web.app.test.EventManager.createAndStoreEvent(EventManager.java:31)
    	at com.web.app.test.EventManager.main(EventManager.java:14)
    Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]'id' : nom de colonne incorrect.
    	at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    	at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSCursorRequest.openCursor(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.execute(Unknown Source)
    	at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
    	at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
    	at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
    	at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:85)
    	... 18 more

  4. #4
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    effectivement mapper une colonne qui n'existe pas va générer une erreur

    la propriété id correspond à la clé primaire de ta table, donc d'après ce que tu dis c'est initiales

    regarde la doc pour la bonne syntaxe dans le fichier xml

    enfin que le mapping soit vide est bizarre

    comment t'y prends-tu pour le générer ?

    peux-tu donner la structure de ta table ?

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    je vais regarder la doc pour voir comment déclarer l'id quand celui mappe vers une colonne de type char.

    pour le générer, j'utilise hibernate tools, new --> Hibernate XML Mapping file (hbm.xml)
    puis je donne un nom et je lui donne la classe à mapper en puis finish.
    là il crée le fiichier mais sans les champs de la table ....

    peut-être qu'il ne peut pas se connecter..
    en fait voilà ce qu'il crée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.web.app.metiers">
      <class name="Collaborateurs">
      </class>
    </hibernate-mapping>

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    la strucuture de la table :

    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
     
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[COLLABORATEURS_TR]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[COLLABORATEURS_TR]
    GO
     
    CREATE TABLE [dbo].[COLLABORATEURS_TR] (
    	[INITIALES] [char] (4) COLLATE French_BIN NOT NULL ,
    	[QUALITE] [char] (3) COLLATE French_BIN NOT NULL ,
    	[NOM] [char] (25) COLLATE French_BIN NOT NULL ,
    	[PRENOM] [char] (20) COLLATE French_BIN NOT NULL ,
    	[NUMERO_COMPTABLE] [int] NOT NULL ,
    	[FONCTION_01] [char] (1) COLLATE French_BIN NOT NULL ,
    	[EQUIPE] [smallint] NOT NULL ,
    	[COMMENTAIRE] [char] (90) COLLATE French_BIN NOT NULL ,
    	[ASSISTANTE] [char] (4) COLLATE French_BIN NOT NULL ,
    	[TYPE_DE_BIEN] [char] (1) COLLATE French_BIN NOT NULL ,
    	[LANCEMENT_DENONCE] [char] (1) COLLATE French_BIN NOT NULL ,
    	[SUIVI_CREATION] [char] (8) COLLATE French_BIN NOT NULL ,
    	[SUIVI_MODIFICATION] [char] (8) COLLATE French_BIN NOT NULL ,
    	[DERNIER_UTIL] [char] (4) COLLATE French_BIN NOT NULL ,
    	[ALIAS] [char] (64) COLLATE French_BIN NOT NULL ,
    	[CODE_LANGUE] [char] (3) COLLATE French_BIN NOT NULL ,
    	[REPERTOIRE_UTIL] [char] (100) COLLATE French_BIN NOT NULL ,
    	[LIGNE_DIRECTE] [char] (50) COLLATE French_BIN NOT NULL ,
    	[CODEREG] [char] (3) COLLATE French_BIN NOT NULL ,
    	[CODESITE] [char] (3) COLLATE French_BIN NOT NULL ,
    	[CODESTE] [char] (4) COLLATE French_BIN NOT NULL ,
    	[EMAIL] [char] (64) COLLATE French_BIN NOT NULL ,
    	[IMPRIMPRINC] [char] (255) COLLATE French_BIN NOT NULL ,
    	[NUMAUTO] [int] NOT NULL ,
    	[PHOTO] [char] (30) COLLATE French_BIN NOT NULL ,
    	[ACTIF] [char] (1) COLLATE French_BIN NOT NULL 
    ) ON [PRIMARY]
    GO

  7. #7
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    effectivement de cette manière hibernate ne crée pas un mapping correct

    utilise plutôt l'utilitaire de reverse engineering pour créer les mappings et les objets Java directement à partir de ta base de données

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    je viens de regarder mais ça va me créer un fichier hibernate.reveng.xml mais pas les objets java ni les mapping.
    en plus quand j'essaye cette utilitaire, je bloque sur la fenêtre configure table filter, car dans le combo Console

    désolé d'être un peu lourd....

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    dans le combo console configuration, il est vide...

  10. #10
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    alors il te reste plus qu'a la créer

    dans l'onglet hibernate configurations, tu crées une nouvelle configuration
    tu lui donnes un nom, le projet auquel elle se rattache, le fichier hibernate.cfg.xml et tu sauves

    tu la réutilises dans le hibernate.reveng.xml, et ensuite tu devrais pouvoir t'en sortir

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    l'onglet hibernate configurations dont tu parles, c'est celui qui permet de créer le fichier hibernate.cfg.xml ?

    ça je l'ai déjà fait.

  12. #12
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    non c'est la vue montrant les configurations Hibernate

    tu peux la voir via le menu Window->show view->hibernate configurations

  13. #13
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    ok, c'est fait
    j'ai crée une configuration qui s'appelle hibernate (quelle drôle d'idée je sais..)
    quand je lance l'utilitaire Hibernate Reverse Engineering je peux maintenant récupérer la configuration hibernate dans le combo mais quand je clique sur refresh j'ai un message Hibernate Configuration error :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Error while expanding Database 
    Reason :
    org.hibernate.console.HibernateConsoleRuntimeException: Could not compute classpath
    puis le détail de l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    org.hibernate.console.HibernateConsoleRuntimeException: Could not compute classpath
    Could not compute classpath
      org.eclipse.debug.core.DebugException: Launch configuration hibernate at C:\eclipseEuropa\eclipse\workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\hibernate.launch does not exist.
        Launch configuration hibernate at C:\eclipseEuropa\eclipse\workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\hibernate.launch does not exist.
        org.eclipse.debug.core.DebugException: Launch configuration hibernate at C:\eclipseEuropa\eclipse\workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\hibernate.launch does not exist.
          Launch configuration hibernate at C:\eclipseEuropa\eclipse\workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\hibernate.launch does not exist.

  14. #14
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    bon j'ai refais le truc et maintennat ça marche, et j'ai réussi à créer le fichier hibernate.revenge.xml ça me donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >
     
    <hibernate-reverse-engineering>
      <table-filter match-catalog="AUGUSTE_DEV" match-schema="dbo" match-name="COLLABORATEURS_TR"/>
    </hibernate-reverse-engineering>
    maintenat je fais quoi avec ?

  15. #15
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    tu ouvres la fenêtre de hibernate code generation (bouton open hibernate code generation dialog, celui qui ressemble au bouton run plus le logo hibernate), tu crées une nouvelle configuration avec: le nom de ta config de connexion (hibernate dans ton cas), le repertoire d'output, coche le reverse engineer from jdbc connection, précise le nom du package et le fichier reveng.xml que tu as généré.
    Dans l'onglet exporters coche ce que tu veux créer (hibernate xml mappings et domain code). Apply et run !

    si tu veux modifier ton hibernate.cfg.xml en même temps, coche le dans les exporters

  16. #16
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    yes merci...
    je l'ai fait et ça me crée mon fichier .hbm.xml.

    il matche bien avec la classe, j'approche du but.

    mais qund je lance ma classe de test :
    c'est dû au fait que j'initialise pas la clé (initiales)

    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
     
    Exception in thread "main" org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.web.app.metiers.Collaborateurs
    	at org.hibernate.id.Assigned.generate(Assigned.java:33)
    	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
    	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
    	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
    	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
    	at $Proxy0.save(Unknown Source)
    	at com.web.app.test.EventManager.createAndStoreEvent(EventManager.java:80)
    	at com.web.app.test.EventManager.main(EventManager.java:14)
    si j'initialise la clé avec collaborateurs?setInitiales("BMAR");
    j'ai le message suivant :

    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
     
    Hibernate: insert into AUGUSTE_DEV.dbo.COLLABORATEURS_TR (QUALITE, NOM, PRENOM, NUMERO_COMPTABLE, FONCTION_01, EQUIPE, COMMENTAIRE, ASSISTANTE, TYPE_DE_BIEN, LANCEMENT_DENONCE, SUIVI_CREATION, SUIVI_MODIFICATION, DERNIER_UTIL, ALIAS, CODE_LANGUE, REPERTOIRE_UTIL, LIGNE_DIRECTE, CODEREG, CODESITE, CODESTE, EMAIL, IMPRIMPRINC, NUMAUTO, PHOTO, ACTIF, INITIALES) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    Exception in thread "main" java.lang.ClassCastException: java.lang.Integer
    	at org.hibernate.type.ShortType.set(ShortType.java:40)
    	at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
    	at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:107)
    	at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:1997)
    	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2243)
    	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2660)
    	at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:56)
    	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
    	at com.web.app.test.EventManager.createAndStoreEvent(EventManager.java:82)
    	at com.web.app.test.EventManager.main(EventManager.java:14)
    voiçi ma classe de test (la nouvelle) :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    package com.web.app.test;
     
    import org.hibernate.Session;
     
    import com.web.app.metiers.Collaborateurs;
    import com.web.app.tools.HibernateUtil;
     
    public class EventManager {
     
        public static void main(String[] args) {
            EventManager mgr = new EventManager();
     
            if (args[0].equals("store")) {
                mgr.createAndStoreEvent("MR", "MARLEY", "Bob", "", "", "", "ENG", "", "", "", "TEST", "", "bob.marley@bnpparibas.com", 100, "", "", "O", "54 14", 10, 24, "", "", "", "", "");
            }
     
            HibernateUtil.getSessionFactory().close();
        }
     
        private void createAndStoreEvent(String qualite,
        								 String nom,
        								 String prenom,
        								 String actif,
        								 String alias,
        								 String assistante,
        								 String codeLangue,
        								 String codereg,
        								 String codesite,
        								 String codeste,
        								 String commentaire,
        								 String dernierUtil,
        								 String email,
        								 int equipe,
        								 String fonction01,
        								 String imprimprinc,
        								 String lancementDenonce,
        								 String ligneDirecte,
        								 int numauto,
        								 int numeroComptable,
        								 String photo,
        								 String repertoireUtil,
        								 String suiviCreation,
        								 String suiviModification,
        								 String typeDeBien) {
     
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
     
            session.beginTransaction();
     
            Collaborateurs collaborateurs = new Collaborateurs();
     
            collaborateurs.setQualite(qualite);
            collaborateurs.setNom(nom);
            collaborateurs.setPrenom(prenom);
            collaborateurs.setActif(actif);
            collaborateurs.setAlias(alias);
            collaborateurs.setAssistante(assistante);
            collaborateurs.setCodeLangue(codeLangue);
            collaborateurs.setCodereg(codereg);
            collaborateurs.setCodesite(codesite);
            collaborateurs.setCodeste(codeste);
            collaborateurs.setCommentaire(commentaire);
            collaborateurs.setDernierUtil(dernierUtil);
            collaborateurs.setEmail(email);
            collaborateurs.setEquipe(equipe);
            collaborateurs.setFonction01(fonction01);
            collaborateurs.setImprimprinc(imprimprinc);
            collaborateurs.setLancementDenonce(lancementDenonce);
            collaborateurs.setLigneDirecte(ligneDirecte);
            collaborateurs.setNumauto(numauto);
            collaborateurs.setNumeroComptable(numeroComptable);
            collaborateurs.setPhoto(photo);
            collaborateurs.setRepertoireUtil(repertoireUtil);
            collaborateurs.setSuiviCreation(suiviCreation);
            collaborateurs.setSuiviModification(suiviModification);
            collaborateurs.setTypeDeBien(typeDeBien);
     
            //collaborateurs.setInitiales("BMAR");
     
            session.save(collaborateurs);
     
            session.getTransaction().commit();
        }
     
    }
    et mon fichier hbm :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <?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 29 nov. 2007 17:23:38 by Hibernate Tools 3.2.0.CR1 -->
    <hibernate-mapping package="com.web.app.metiers">
        <class name="Collaborateurs" table="COLLABORATEURS_TR" schema="dbo" catalog="AUGUSTE_DEV">
            <id name="initiales" type="string">
                <column name="INITIALES" length="4" />
                <generator class="assigned" />
            </id>
            <property name="qualite" type="string">
                <column name="QUALITE" length="3" not-null="true" />
            </property>
            <property name="nom" type="string">
                <column name="NOM" length="25" not-null="true" />
            </property>
            <property name="prenom" type="string">
                <column name="PRENOM" length="20" not-null="true" />
            </property>
            <property name="numeroComptable" type="int">
                <column name="NUMERO_COMPTABLE" not-null="true" />
            </property>
            <property name="fonction01" type="char">
                <column name="FONCTION_01" length="1" not-null="true" />
            </property>
            <property name="equipe" type="short">
                <column name="EQUIPE" not-null="true" />
            </property>
            <property name="commentaire" type="string">
                <column name="COMMENTAIRE" length="90" not-null="true" />
            </property>
            <property name="assistante" type="string">
                <column name="ASSISTANTE" length="4" not-null="true" />
            </property>
            <property name="typeDeBien" type="char">
                <column name="TYPE_DE_BIEN" length="1" not-null="true" />
            </property>
            <property name="lancementDenonce" type="char">
                <column name="LANCEMENT_DENONCE" length="1" not-null="true" />
            </property>
            <property name="suiviCreation" type="string">
                <column name="SUIVI_CREATION" length="8" not-null="true" />
            </property>
            <property name="suiviModification" type="string">
                <column name="SUIVI_MODIFICATION" length="8" not-null="true" />
            </property>
            <property name="dernierUtil" type="string">
                <column name="DERNIER_UTIL" length="4" not-null="true" />
            </property>
            <property name="alias" type="string">
                <column name="ALIAS" length="64" not-null="true" />
            </property>
            <property name="codeLangue" type="string">
                <column name="CODE_LANGUE" length="3" not-null="true" />
            </property>
            <property name="repertoireUtil" type="string">
                <column name="REPERTOIRE_UTIL" length="100" not-null="true" />
            </property>
            <property name="ligneDirecte" type="string">
                <column name="LIGNE_DIRECTE" length="50" not-null="true" />
            </property>
            <property name="codereg" type="string">
                <column name="CODEREG" length="3" not-null="true" />
            </property>
            <property name="codesite" type="string">
                <column name="CODESITE" length="3" not-null="true" />
            </property>
            <property name="codeste" type="string">
                <column name="CODESTE" length="4" not-null="true" />
            </property>
            <property name="email" type="string">
                <column name="EMAIL" length="64" not-null="true" />
            </property>
            <property name="imprimprinc" type="string">
                <column name="IMPRIMPRINC" not-null="true" />
            </property>
            <property name="numauto" type="int">
                <column name="NUMAUTO" not-null="true" />
            </property>
            <property name="photo" type="string">
                <column name="PHOTO" length="30" not-null="true" />
            </property>
            <property name="actif" type="char">
                <column name="ACTIF" length="1" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>

  17. #17
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    pour le premier point relis la doc hibernate au sujet des id et generator: ici

    le mode assigned indique que tu devras toujours assigner toi même la clé primaire avant de sauver une nouvelle ligne. Avec la clé que tu as choisie, je pense que c'est le generator qui te convient (a moins de créer ton propre generator ?)

    ensuite hibernate est très sensible aux types, comme te le dis le message d'erreur, il essaie d'assigner un int à un champ mappé en tant que short

    vais pas te mâcher le travail, et te laisser corriger ça

  18. #18
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    oui tu avais raison...
    j'ai assigné moi-même la clé primaire et j'ai l'erreur sur le cast Integer vers un type short
    en effet, une zone de la base est défini en smallint soit l'équivalent d'un short côté java.

    j'ai fait la modif mais toujours le même message..

    je continue à chercher...

  19. #19
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    bon ça y est ça marche, l'enregistrement a bien été ajouté en base (j'avais oublié de change int en shot dans la méthode get ... )

    merci pour ton aide Gardyen !!!!!

    je vais continuer à patauger un peu plus loin dans hibernate...

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

Discussions similaires

  1. Besoin d'aide hibernate débutant
    Par bribe dans le forum Hibernate
    Réponses: 6
    Dernier message: 17/03/2011, 15h12
  2. Hibernate - [Débutant]
    Par chennuo dans le forum Hibernate
    Réponses: 19
    Dernier message: 30/11/2006, 16h25
  3. [ débutant ] hibernate 2.1
    Par wizzmasta dans le forum Oracle
    Réponses: 6
    Dernier message: 13/12/2005, 11h15
  4. [HIBERNATE] - Débutant - Requête croisées
    Par charlot44 dans le forum Hibernate
    Réponses: 19
    Dernier message: 14/06/2005, 16h06
  5. Hibernate - Débutant
    Par charlot44 dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/06/2005, 16h33

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