Hello everyone. I'm trying to run my first Hibernate 3.0 program. I've searched the world of google but I'm still stuck. Any assistance is greatly appreciated! My apologies for the length.
+----------------------------------------+
| Directory Structure: Before running
ANT +----------------------------------------+
hib
+lib
+src
+com
+cundiff
+claude
+library
Book.hbm.xml
Book.java
DoIt.java
hibernate.cfg.xml
build.xml
+----------------------------------------+
| StackTrace
+----------------------------------------+
copy-resources:
[copy] Copying 2 files to c:\Java_Programs\hib\bin
compile:
[javac] Compiling 2 source files to c:\Java_Programs\hib\bin
execute:
[echo] Hi
[
java] Got past try
[java] log4j:WARN No appenders could be found for logger (org.hibernate.cf
.Environment).
[java] log4j:WARN Please initialize the log4j system properly.
[java] 1
[java] Exception in
thread "main" org.hibernate.InvalidMappingException: C
uld not parse mapping document from resource com/cundiff/claude/library/Book.hb
.xml
[java] at org.hibernate.cfg.Configuration.addResource(Configuration.ja
a:602)
[java] at org.hibernate.cfg.Configuration.parseMappingElement(Configur
tion.java:1621)
[java] at org.hibernate.cfg.Configuration.parseSessionFactory(Configur
tion.java:1589)
[java] at org.hibernate.cfg.Configuration.doConfigure(Configuration.ja
a:1568)
[java] at org.hibernate.cfg.Configuration.doConfigure(Configuration.ja
a:1542)
[java] at org.hibernate.cfg.Configuration.configure(Configuration.java
1462)
[java] at org.hibernate.cfg.Configuration.configure(Configuration.java
1448)
[java] at com.cundiff.claude.library.DoIt.main(Unknown Source)
[java] Caused by: org.hibernate.InvalidMappingException: Could not parse m
pping document from invalid mapping
[java] at org.hibernate.cfg.Configuration.addInputStream(Configuration
java:535)
[java] at org.hibernate.cfg.Configuration.addResource(Configuration.ja
a:599)
[java] ... 7 more
[java] Caused by: org.xml.sax.SAXParseException: Element type "session-fac
ory" must be declared.
[java] at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.
reateSAXParseException(ErrorHandlerWrapper.java:195)
[java] at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.
rror(ErrorHandlerWrapper.java:131)
[java] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.rep
rtError(XMLErrorReporter.java:384)
[java] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.rep
rtError(XMLErrorReporter.java:318)
[java] at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.
andleStartElement(XMLDTDValidator.java:1929)
[java] at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.
tartElement(XMLDTDValidator.java:764)
+----------------------------------------+
| Book.java
+----------------------------------------+
+----------------------------------------+
| Book.hbm.xml
+----------------------------------------+
<?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>
<session-factory>
<class name="Book" table="Book">
<id name="id" column="id">
<generator class="increment"/>
</id>
<property name="title"/>
<property name="isbn"/>
</class>
</session-factory>
</hibernate-mapping>
+----------------------------------------+
| DoIt.java
+----------------------------------------+
+----------------------------------------+
| hibernate.cfg.xml
+----------------------------------------+
<?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">com.mysql.jdbc.Driver</property>
<property name="connection.url">
jdbc:mysql://localhost/hib</property>
<property name="connection.username">root</property>
<property name="connection.password">somepassword</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</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="com/cundiff/claude/library/Book.hbm.xml"/>
</session-factory>
</hibernate-configuration>
+----------------------------------------+
| ANT Build.xml
+----------------------------------------+
<project name="hibernate-tutorial" default="execute">
<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>
<!--Classpath declaration-->
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
<include name="**/*.zip"/>
</fileset>
</path>
<!--Clean up-->
<target name="clean">
<delete dir="${targetdir}"/>
<mkdir dir="${targetdir}"/>
</target>
<!--Compile-->
<target name="compile" depends="clean, copy-resources">
<javac srcdir="${sourcedir}"
destdir="${targetdir}"
classpathref="libraries"/>
</target>
<!--Copy-->
<target name="copy-resources">
<copy todir="${targetdir}">
<fileset dir="${sourcedir}">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<!--Run Program-->
<target name="execute" depends="compile">
<echo>Hi</echo>
<java fork="true"
classname="com.cundiff.claude.library.DoIt"
classpathref="libraries">
<classpath path="${targetdir}"/>
</java>
</target>
</project>
+----------------------------------------+
| mySql Databse hib.sql
+----------------------------------------+
#create database
CREATE DATABASE hib;
#select this db for use
USE hib;
#Create Book table
CREATE TABLE book
(
id SMALLINT(6) primary key auto_increment,
isbn VARCHAR(25) not null,
title VARCHAR(50) not null
);