Some corrections to Hibernate tutorial

Hibernate logo
I was referring to the First application at Hibernate (Jboss) offical documentation. I found some problems when doing the exercise: just want to share some of my findings so others may benefit.

1) dependency version missing: there are already some some discussions on the Hibernate discussion forum, such as this one and that one. I followed the first one: added the version numbers as suggested and the problem went away.

2) jdbc driver can not be found, the fix is to

mvn install:install-file -DgroupId=hsqldb -DartifactId=hsqldb -Dversion= -Dpackaging=jar -Dfile=/path/to/your/hsqldb.jar

in my case (mac) this is /Users/major_xu/Downloads/hsqldb/lib/hsqldb.jar

I saw discussion on this one, too, the suggestion is to “add classpath for hsqldb.jar”. But I don’t know how to do it in maven command line.

3) misc: there are a lot other corrections:

mapping in Hibernate configuration, the tutorial says
< mapping resource="events/Event.hbm.xml"/ >
< mapping resource="events/Person.hbm.xml"/ >

It should follow the format of earlier “hibernate.cfg.xml” instead, and no need to include Event.hbm.xml twice.
< mapping resource="org/hibernate/tutorial/domain/Event.hbm.xml"/ >

By the same token, “Person.hbm.xml” should be placed in the same place as “Event.hbm.xml” need to add getter and setter method for “id” and “age”. Otherwise, I am getting an error like this:
Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] addPersonToEvent goes like this
private void addPersonToEvent(Long personId, Long eventId) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();

Person aPerson = (Person) session.load(Person.class, personId);
Event anEvent = (Event) session.load(Event.class, eventId);


4. To be done:
I still need to make log4j work, and I’d like to have Eclipse working with Maven (right now Eclipse seems not like the extra java/main directory which is required by Maven).

Email me at minjie DOT xu AT gmail DOT com if you would like a copy of the code.


Setup Maven on Mac

(use the version you have at your mac, in my case 1.5.0)
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home

HSQLDB server setup and DB manager
do this in the hsqldb installation dir
java -cp ./lib/hsqldb.jar org.hsqldb.Server

and to see the database in action, run database manager UI (from the lib dir which has hsqldb.jar)
java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

I used the above commands in stead of the Maven commands mentioned in the documentation.
mvn exec:java -Dexec.mainClass=”org.hsqldb.Server” -Dexec.args=”-database.0 file:target/data/tutorial”

Leave a Reply