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 :

Erreur de compilation du document de Mapping


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 47
    Points
    47
    Par défaut Erreur de compilation du document de Mapping
    Bonjour,

    Dans le cadre d'un projet de fin d'études, je suis en train de préparer ma couche d'accès aux données avec Hibernate. Puisque c'est une 1ere pour moi laors j'ai suivi le tutoriel "Débuter avec Hibernate sous Eclipse" de "Minosis" ave Hibernate Synchronizer.

    Dans ce tutoriel, il est fortement conseillé de changer le code généré automatiquement par H.Synchronizer par un code qui est plus conforme à la documentation de Hibernate, c'est ce que j'ai fait..

    Je vous poste mon fichier .hbm :

    Utilisateur.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
    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
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
     
    <hibernate-mapping>
     
     
    	<class
    		name="com.oxia.hibernate.Utilisateur"
    		table="utilisateur"
    	>
     
    		<id
    			name="Id"
    			type="string"
    		>
    		<column 
    			name="id_user"
    			sql-type="varchar(20)"
    		/>
     
    		<generator 
    			class="sequence"/>
     
    		</id>
     
     
    		<property
    			name="NomUser"
    			type="string"
     
    		>
    		<column 		
    				name="nom_user"
    				sql-type="varchar(20)"
    				not-null="false"
    			/>
    		</property>
     
     
    		<property
    			name="PrenomUser"
    			type="string"
    		>
    		<column 
    			name="prenom_user"
    			sql-type="varchar(20)"
    			not-null="false"
    		/>
    		</property>
     
    	        <property
    			name="LoginUser"
    			type="string"
    		>
    		<column
    			name="login_user"
    			sql-type="varchar(20)"
    			not-null="false"
    		/>
    		</property>
     
    		<property
    			name="PaswordUser"
    			type="string"
    		>
    		<column
    			name="pasword_user"
    			sql-type="varchar(20)"
    			not-null="false"
    		/>
    		</property>
     
    		<property
    			name="MailUser"
    			type="string"
    		>
    		<column
    			name="mail_user"
    			sql-type="longtext"
    			not-null="false"
    		/>
    		</property>
     
    		<property
    			name="PositionUser"
    			type="string"
    		>
    		<column
    			name="position_user"
    			sql-type="varchar(20)"
    			not-null="false"
    		/>
    		</property>
     
    		<set
    			name="Produits"
    			table="gere"
    			cascade="all"
    		>
    			<key column="id_user"/>
    			<many-to-many column="id_prod" class="com.oxia.hibernate.Produit"/>
    		</set>
    		<set
    			name="GroupeUsers"
    			table="fait_partie"
    			cascade="all"
    		>
    			<key column="id_user"/>
    			<many-to-many column="id_groupe" class="com.oxia.hibernate.GroupeUser"/>
    		</set>
    		<set
    			name="Artifacts"
    			table="manip_art"
    			cascade="all"
    		>
    			<key column="id_user"/>
    			<many-to-many column="id_art" class="com.oxia.hibernate.Artifact"/>
    		</set>
     
     
    	</class>	
    </hibernate-mapping>

    Je vous poste aussi le fichier Artifact.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
    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
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
     
    <hibernate-mapping >
    	<class 
    		name="com.oxia.hibernate.Artifact" 	
    		table="artifact"
    	>
    		<id name="Id" type="string">
    			<column name="id_art" sql-type="varchar(10)" />
    			<generator class="sequence" />
    		</id>
     
     
    		<property name="NomArt" type="string">
    			<column name="nom_art" sql-type="varchar(10)" not-null="false" />
    		</property>
     
     
    		<property name="verArt" type="string" >
    		<column name="ver_art" sql-type="longtext" not-null="false"/>	
    		</property>
     
     
    		<property name="StatutArt" column="STATUT_ART" type="string"
    			not-null="false" >
    			<column name="statut_art" sql-type="longtext" not-null="false"/>
    			</property>
     
     
    		<property name="DescriptionArt"  type="string">
    			<column name="description_art" sql-type="longtext" not-null="false"/>
    			</property>
     
     
     
    		<many-to-one name="IdProd" column="id_prod" class="com.oxia.hibernate.Produit"
    			not-null="true">
    		</many-to-one>
    		<set name="DependanceArtsByIdArt" inverse="true" lazy="false"
    			cascade="persist,save-update">
    			<key column="id_art" />
    			<one-to-many class="DependanceArt" />
    		</set>
    		<set name="DependanceArtsByArtIdArt" inverse="true" lazy="false"
    			cascade="persist,save-update">
    			<key column="id_art" />
    			<one-to-many class="com.oxia.hibernate.DependanceArt" />
    		</set>
    		<set name="HistoriqueArts" inverse="true" lazy="false"
    			cascade="persist,save-update">
    			<key column="id_art" />
    			<one-to-many class="com.oxia.hibernate.HistoriqueArt" />
    		</set>
    		<set name="AttachmentArts" table="joint_piece" cascade="all">
    			<key column="id_art" />
    			<many-to-many column="id_attach" class="com.oxia.hibernate.AttachmentArt" />
    		</set>
    		<set name="Utilisateurs" table="manip_art" cascade="all">
    			<key column="id_art" />
    			<many-to-many column="id_user" class="com.oxia.hibernate.Utilisateur" />
    		</set>
    	</class>
    </hibernate-mapping>
    Voici mon fichier de configuration 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
    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
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration
        PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     
    <hibernate-configuration>
        <session-factory >
     
    		<!-- local connection properties -->
    		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/oxiarm</property>
    		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="hibernate.connection.username">root</property>
    		<property name="hibernate.connection.password">xxxx</property>
    		<!-- property name="hibernate.connection.pool_size"></property -->
     
    		<!-- dialect for MySQL -->
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
     
            <property name="hibernate.show_sql">false</property>
            <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
     
     
        	<property name="hbm2ddl.auto">update</property>
    	<property name="show_sql">true</property>
     
     
     
        <!-- Mapping files -->
     
        <mapping resource="com/oxia/hibernate/Utilisateur.hbm.xml" />
        <mapping resource="com/oxia/hibernate/Artifact.hbm.xml" />
        <mapping resource="com/oxia/hibernate/AttachmentArt.hbm.xml" />
        <mapping resource="com/oxia/hibernate/DependanceArt.hbm.xml" />
        <mapping resource="com/oxia/hibernate/Design.hbm.xml" />
        <mapping resource="com/oxia/hibernate/FaitPartie.hbm.xml" />
        <mapping resource="com/oxia/hibernate/Feature.hbm.xml" />
        <mapping resource="com/oxia/hibernate/Gere.hbm.xml" />
        <mapping resource="com/oxia/hibernate/GroupeUser.hbm.xml" />
        <mapping resource="com/oxia/hibernate/HistoriqueArt.hbm.xml" />
        <mapping resource="com/oxia/hibernate/Implementation.hbm.xml" />
        <mapping resource="com/oxia/hibernate/JointPiece.hbm.xml" />
        <mapping resource="com/oxia/hibernate/ManipArt.hbm.xml" />
        <mapping resource="com/oxia/hibernate/Produit.hbm.xml" />
        <mapping resource="com/oxia/hibernate/Requirement.hbm.xml" />
        <mapping resource="com/oxia/hibernate/Testcase.hbm.xml" />
     
     
        </session-factory>
    </hibernate-configuration>
    et enfin la classe métier qui traite une insertion simple dans la table Utilisateur :
    TestUtilisateur.java
    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.oxia.service;
     
    import java.util.*;
    import org.hibernate.*;
    import com.oxia.hibernate.*;
    import com.oxia.hibernate.dao.UtilisateurDAO;
     
    public class TestUtilisateur {
     
    	public TestUtilisateur() {
    		// TODO Auto-generated constructor stub
    	}
     
    	public static void main(String args[]) throws HibernateException{
     
    		Session session = HibernateUtil.currentSession();
     
    		Transaction tx = session.beginTransaction();
     
    		Utilisateur user = new Utilisateur();
     
    		user.setId("2");
    		user.setNomUser("ESSAI");
    		user.setPrenomUser("Karim");
    		user.setLoginUser("karim");
    		user.setPaswordUser("karim");
    		user.setMailUser("test@test.com");
    		user.setPositionUser("admin");
     
    		session.save(user);
     
    		tx.commit();
     
    		HibernateUtil.closeSession();
    	}
     
    }
    Voici l'erreur générée dans la console :
    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
    20 mai 2009 17:08:47 org.hibernate.cfg.Environment <clinit>
    INFO: Hibernate 3.0.5
    20 mai 2009 17:08:47 org.hibernate.cfg.Environment <clinit>
    INFO: hibernate.properties not found
    20 mai 2009 17:08:47 org.hibernate.cfg.Environment <clinit>
    INFO: using CGLIB reflection optimizer
    20 mai 2009 17:08:47 org.hibernate.cfg.Environment <clinit>
    INFO: using JDK 1.4 java.sql.Timestamp handling
    20 mai 2009 17:08:47 org.hibernate.cfg.Configuration configure
    INFO: configuring from resource: /hibernate.cfg.xml
    20 mai 2009 17:08:47 org.hibernate.cfg.Configuration getConfigurationInputStream
    INFO: Configuration resource: /hibernate.cfg.xml
    20 mai 2009 17:08:47 org.hibernate.cfg.Configuration addResource
    INFO: Mapping resource: com/oxia/hibernate/Utilisateur.hbm.xml
    20 mai 2009 17:08:48 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
    INFO: Mapping class: com.oxia.hibernate.Utilisateur -> utilisateur
    20 mai 2009 17:08:48 org.hibernate.cfg.HbmBinder bindCollection
    INFO: Mapping collection: com.oxia.hibernate.Utilisateur.Produits -> gere
    20 mai 2009 17:08:48 org.hibernate.cfg.HbmBinder bindCollection
    INFO: Mapping collection: com.oxia.hibernate.Utilisateur.GroupeUsers -> fait_partie
    20 mai 2009 17:08:48 org.hibernate.cfg.HbmBinder bindCollection
    INFO: Mapping collection: com.oxia.hibernate.Utilisateur.Artifacts -> manip_art
    20 mai 2009 17:08:48 org.hibernate.cfg.Configuration addResource
    INFO: Mapping resource: com/oxia/hibernate/Artifact.hbm.xml
    20 mai 2009 17:08:48 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
    INFO: Mapping class: com.oxia.hibernate.Artifact -> artifact
    20 mai 2009 17:08:48 org.hibernate.cfg.Configuration add
    GRAVE: Could not compile the mapping document
    org.hibernate.MappingException: column attribute may not be used together with <column> subelement
    	at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:946)
    	at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.java:1313)
    	at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1001)
    	at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:1769)
    	at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:1728)
    	at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:318)
    	at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:236)
    	at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:152)
    	at org.hibernate.cfg.Configuration.add(Configuration.java:362)
    	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:400)
    	at org.hibernate.cfg.Configuration.addResource(Configuration.java:449)
    	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1263)
    	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1235)
    	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1217)
    	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1184)
    	at org.hibernate.cfg.Configuration.configure(Configuration.java:1112)
    	at org.hibernate.cfg.Configuration.configure(Configuration.java:1098)
    	at com.oxia.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:13)
    	at com.oxia.service.TestUtilisateur.main(TestUtilisateur.java:16)
    Exception in thread "main" java.lang.ExceptionInInitializerError
    	at com.oxia.service.TestUtilisateur.main(TestUtilisateur.java:16)
    Caused by: java.lang.RuntimeException: Problème de configuration : Error reading resource: com/oxia/hibernate/Artifact.hbm.xml
    	at com.oxia.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:15)
    	... 1 more
    Caused by: org.hibernate.MappingException: Error reading resource: com/oxia/hibernate/Artifact.hbm.xml
    	at org.hibernate.cfg.Configuration.addResource(Configuration.java:452)
    	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1263)
    	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1235)
    	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1217)
    	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1184)
    	at org.hibernate.cfg.Configuration.configure(Configuration.java:1112)
    	at org.hibernate.cfg.Configuration.configure(Configuration.java:1098)
    	at com.oxia.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:13)
    	... 1 more
    Caused by: org.hibernate.MappingException: column attribute may not be used together with <column> subelement
    	at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:946)
    	at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.java:1313)
    	at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1001)
    	at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:1769)
    	at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:1728)
    	at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:318)
    	at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:236)
    	at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:152)
    	at org.hibernate.cfg.Configuration.add(Configuration.java:362)
    	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:400)
    	at org.hibernate.cfg.Configuration.addResource(Configuration.java:449)
    	... 8 more

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 47
    Points
    47
    Par défaut
    C'est bon, j'ai trouvé l'erreur : en fait il ne fallait pas mettre l'attribut colonne deux fois dans le même <property>, c'était juste une erreur d'inattention : on devrait remplacer alors ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <property name="StatutArt" column="STATUT_ART" type="string"
    			not-null="false" >
    			<column name="statut_art" sql-type="longtext" not-null="false"/>
    			</property>
    par cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <property name="StatutArt"
                            type="string"
    			>
     
    			<column 
                                  name="statut_art"
                                   sql-type="longtext" 
                                   not-null="false"
                             />
    			</property>

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

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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