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:
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:
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:
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:
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:
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