Problème de lecture du fichier de mapping
Bonjour,
Je débute tout juste avec Hibernate. Je suis donc allé sur le site hibernate.org où j'ai téléchagré la version 3.1 de Hibernate. J'ai suivi les instructions de ce tutoriel http://www.hibernate.org/hib_docs/v3.../tutorial.html.
Je suis donc arrivé jusqu'à la partie 1.2.6 . J'ai donc l'arborescence suivante pour mon projet de test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
+HibernateTest
.
+lib
<Hibernate and third-party libraries>
+src
+events
EventManager.java
Event.java
Event.hbm.xml
+util
HibernateUtil.java
hibernate.cfg.xml
log4j.properties
+data
+bin
build.xml |
Dans mon fichier hibernate.cfg.xml j'ai ça :
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
|
<?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>
<!-- Database connection settings -->
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<mapping resource="events/Event.hbm.xml"/>
</session-factory>
</hibernate-configuration> |
et dans mon fichier build.xml j'ai ça :
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
|
<project name="hibernate-tutorial" default="compile">
<property name="sourcedir" value="${basedir}/src"/>
<property name="targetdir" value="${basedir}/bin"/>
<property name="librarydir" value="${basedir}/lib"/>
<path id="libraries">
<fileset dir="${librarydir}">
<include name="*.jar"/>
</fileset>
</path>
<target name="clean">
<delete dir="${targetdir}"/>
<mkdir dir="${targetdir}"/>
</target>
<target name="compile" depends="clean, copy-resources">
<javac srcdir="${sourcedir}"
destdir="${targetdir}"
classpathref="libraries"/>
</target>
<target name="copy-resources">
<copy todir="${targetdir}">
<fileset dir="${sourcedir}">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="run" depends="compile">
<java fork="true" classname="events.EventManager" classpathref="libraries">
<classpath path="${targetdir}"/>
<arg value="${action}"/>
</java>
</target>
</project> |
Je lance donc l'utilitaire Ant pour compiler mon projet avec la ligne suivante (comme conseillé dans le tutoriel sur Hibernate) :
C:\HibernateTest>ant run -Daction=store
J'obtiens ceci dans la console DOS :
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
|
Buildfile: build.xml
clean:
[delete] Deleting directory C:\HibernateTest\bin
[mkdir] Created dir: C:\HibernateTest\bin
copy-resources:
[copy] Copying 3 files to C:\HibernateTest\bin
[copy] Copied 2 empty directories to 1 empty directory under C:\HibernateTest\bin
compile:
[javac] Compiling 3 source files to C:\HibernateTest\bin
run:
[java] 11:28:55,775 INFO Environment:479 - Hibernate 3.1.3
[java] 11:28:55,785 INFO Environment:509 - hibernate.properties not found
[java] 11:28:55,795 INFO Environment:525 - using CGLIB reflection optimizer
[java] 11:28:55,795 INFO Environment:555 - using JDK 1.4 java.sql.Timestamp handling
[java] 11:28:55,895 INFO Configuration:1308 - configuring from resource: /hibernate.cfg.xml
[java] 11:28:55,895 INFO Configuration:1285 - Configuration resource: /hibernate.cfg.xml
[java] 11:28:56,065 INFO Configuration:469 - Reading mappings from resource: events/Event.hbm.xml
[java] 11:28:56,235 INFO HbmBinder:309 - Mapping class: Event -> EVENTS
[java] Initial SessionFactory creation failed.org.hibernate.MappingException: Could not read mappings from resource: events/Event.hbm.xml
[java] Exception in thread "main" java.lang.ExceptionInInitializerError
[java] at util.HibernateUtil.<clinit>(Unknown Source)
[java] at events.EventManager.createAndStoreEvent(Unknown Source)
[java] at events.EventManager.main(Unknown Source)
[java] Caused by: org.hibernate.MappingException: Could not read mappings from resource: events/Event.hbm.xml
[java] at org.hibernate.cfg.Configuration.addResource(Configuration.java:485)
[java] at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465)
[java] at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433)
[java] at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414)
[java] at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390)
[java] at org.hibernate.cfg.Configuration.configure(Configuration.java:1310)
[java] at org.hibernate.cfg.Configuration.configure(Configuration.java:1296)
[java] ... 3 more
[java] Caused by: org.hibernate.MappingException: class Event not found while looking for property: id
[java] at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:80)
[java] at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:276)
[java] at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:410)
[java] at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:343)
[java] at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:282)
[java] at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:153)
[java] at org.hibernate.cfg.Configuration.add(Configuration.java:386)
[java] at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:427)
[java] at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
[java] ... 9 more
[java] Caused by: java.lang.ClassNotFoundException: Event
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
[java] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
[java] at java.lang.Class.forName0(Native Method)
[java] at java.lang.Class.forName(Class.java:164)
[java] at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:108)
[java] at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:76)
[java] ... 17 more
BUILD SUCCESSFUL
Total time: 3 seconds |
La compilation se passe bien. Le problème vient apparemment du fichier de mapping Event.hbm.xml qu'il n'arrive pas à lire. Pourtant le chemin d'accès est bon je pense.
Quelqu'un pourrait aurait il une idée plus précise d'où le problème peut venir ?
Merci d'avance de votre aide.