He seguido avanzando, y por lo que veo no me encuentra una tabla, o no puede obtener el valor inicial para el generador, y no encuentro nada en San Google. Aquí están mis archivos: 
 
hibernate.cfg.xml  
Código:
  <!DOCTYPE hibernate-configuration SYSTEM 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
   <session-factory> 
      <property name="hibernate.connection.driver_class"> 
         org.hsqldb.jdbcDriver 
      </property> 
      <property name="hibernate.connection.url"> 
         jdbc:hsqldb:hsql://localhost 
      </property> 
      <property name="hibernate.connection.username"> 
         sa 
      </property> 
      <property name="hibernate.dialet"> 
         org.hibernate.dialect.HSQLDialect 
      </property> 
       
      <!-- Usando la conexión de c3p0 --> 
      <!-- Valor mínimo de conexiones JDBC que C3PO puede mantener --> 
      <property name="hibernate.c3p0.min_size">5</property> 
      <!-- Valor máximo de conexiones que el pool puede mantener, si se pasa, lanzará una excepcion --> 
      <property name="hibernate.c3p0.max_size">20</property> 
      <!-- Periodo de tiempo después del cual la conexión será borrada --> 
      <property name="hibernate.c3p0.timeout">300</property> 
      <property name="hibernate.c3p0.max_statements">50</property> 
      <property name="hibernate.c3p0.idle_text_period">3000</property> 
       
    
       
      <!-- Para mostrar e imprimir SQL y stdout --> 
      <property name="show_sql">true</property> 
      <property name="format_sql">true</property> 
       
      <!-- lista de mapeo de documentos xml --> 
      <mapping resource="hello/Message.hbm.xml"/> 
   </session-factory> 
</hibernate-configuration>
  
Message.hbm.xml  
Código:
   
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Este documento xml le dice a hibernate que establezca una relación de 
persistencia entre la clase Message y la tabla MESSAGES, relacionando cada 
campo, y generando el esquema de la bbdd --> 
<hibernate-mapping> 
   <class name="hello.Message" table="MESSAGES" > 
      <!-- Para que no dé error al crear la etiqueta class, debe tener al menos 
      el parámetro id dentro de ella--> 
      <id name="id" column="MESSAGE_ID"> 
         <generator class="increment" />          
      </id> 
      <property name="text" column="MESSAGE_TEXT"/> 
      <many-to-one name="nextMessage" cascade="all" 
      column="NEXT_MESSAGE-ID" foreign-key="FK_NEXT_MESSAGE"/> 
   </class> 
</hibernate-mapping>
  
y build.xml  
Código:
  
<project name="HelloWorldJP" default="compile" basedir="."> 
    
   <!-- Nombre y versión del proyecto--> 
   <property name="proj.name" value="HelloWorldJP"/> 
   <property name="proj.version" value="1.0"/> 
    
   <!-- Propiedades globales para este constructor --> 
   <property name="src.java.dir" value="src"/> 
   <property name="lib.dir" value="lib"/> 
   <property name="build.dir" value="bin"/> 
    
   <!-- Declaración del classpath --> 
   <path id="project.classpath"> 
      <fileset dir="${lib.dir}"> 
         <include name="**/*.jar"/> 
         <include name="**/*.zip"/>          
      </fileset> 
   </path> 
   <!-- Accesos directos útiles --> 
   <patternset id="meta.files"> 
      <include name="**/*.xml"/> 
      <include name="**/*.properties"/> 
   </patternset> 
    
   <!-- Limpieza --> 
   <target name="clean"> 
      <delete dir="${build.dir}"/> 
      <mkdir dir="${build.dir}"/> 
   </target> 
    
   <!-- Compilar las fuentes de java --> 
   <target name="compile" depends="clean"> 
      <mkdir dir="${build.dir}"/> 
      <javac srcdir="${src.java.dir}" destdir="${build.dir}" nowarn="on"> 
         <classpath refid="project.classpath"/> 
      </javac> 
   </target> 
    
   <!-- Copia de metadatos para construir el classpath --> 
   <target name="copymetafiles"> 
      <copy todir="${build.dir}"> 
         <fileset dir="${src.java.dir}"> 
            <patternset refid="meta.files"/> 
         </fileset> 
      </copy> 
   </target> 
    
   <!-- Ejecutando HelloWorldJP --> 
   <target name="run" depends="compile, copymetafiles" 
      description="Build and run HelloWorldJP"> 
      <java fork="true" classname="hello.HelloWorld" 
         classpathref="project.classpath"> 
         <classpath path="${build.dir}"/> 
      </java> 
   </target> 
    
   <!-- Schema Export --> 
    
   <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="project.classpath"/> 
    
   <target name="schemaexport" depends="compile, copymetafiles" 
            description="Exports a generated schema to DB and file"> 
      <hibernatetool destdir="${basedir}"> 
         <classpath path="${build.dir}"/> 
         <configuration configurationfile = "${build.dir}/hibernate.cfg.xml"/> 
         <!-- El exportador es hbm2ddl. Si drop=true, las declaraciones drop de sql son generadas primero y todas las tablas y ctes que 
         existan seran borradas antes de eso. Si create=true, las declaraciones sql son creadas después, creando 
         todas las tablas y ctes. Si export=true, todas las declaraciones ddl son directamente ejecutadas en bbdd, 
         abriendo una conexion con la bbdd encontrada en el fichero de configuracion--> 
         <hbm2ddl drop="true" create="true" export="true" 
            outputfilename="helloworld-ddl.sql" delimiter=";" format="true"/> 
      </hibernatetool> 
   </target> 
   <target name="dbmanager" description="Start HSQLDB manager"> 
      <java classname="org.hsqldb.util.DatabaseManagerSwing" 
         fork="yes" classpathref="project.classpath" failonerror="true"> 
         <arg value="-url"/> 
         <arg value="jdbc:hsqldb:hsql://localhost/"/> 
         <arg value="-driver"/> 
         <arg value="org.hsqldb.jdbcDriver"/> 
      </java> 
   </target> 
</project>
  
que creo son los más importantes. Y éste es el error: 
... 
[java] 09-mar-2010 9:47:51 org.hibernate.stat.StatisticsImpl logSummary 
[java] INFO: query cache misses: 0 
[java] 09-mar-2010 9:47:51 org.hibernate.stat.StatisticsImpl logSummary 
[java] INFO: max query time: 0ms 
[java] Hibernate: 
[java] select 
[java] max(MESSAGE_ID) 
[java] from 
[java] MESSAGES 
[java] 09-mar-2010 9:47:52 org.hibernate.util.JDBCExceptionReporter logExceptions 
[java] ADVERTENCIA: SQL Error: -22, SQLState: S0002 
[java] 09-mar-2010 9:47:52 org.hibernate.util.JDBCExceptionReporter logExceptions 
[java] GRAVE: Table not found in statement [select max(MESSAGE_ID) from MESSAGES] 
[java] Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not fetch initial value for increment generator 
[java] at org.hibernate.exception.SQLStateConverter.convert(  SQLStateConverter.java:90) 
[java] at org.hibernate.exception.JDBCExceptionHelper.conver  t(JDBCExceptionHelper.java:66) 
[java] at org.hibernate.id.IncrementGenerator.getNext(Increm  entGenerator.java:131) 
[java] at org.hibernate.id.IncrementGenerator.generate(Incre  mentGenerator.java:6 
[java] at org.hibernate.event.def.AbstractSaveEventListener.  saveWithGeneratedId(AbstractSaveEventListener.java  :122) 
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventLi  stener.saveWithGeneratedOrRequestedId(DefaultSaveO  rUpdateEventListener.java:210) 
[java] at org.hibernate.event.def.DefaultSaveEventListener.s  aveWithGeneratedOrRequestedId(DefaultSaveEventList  ener.java:56) 
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventLi  stener.entityIsTransient(DefaultSaveOrUpdateEventL  istener.java:195) 
[java] at org.hibernate.event.def.DefaultSaveEventListener.p  erformSaveOrUpdate(DefaultSaveEventListener.java:5  0) 
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventLi  stener.onSaveOrUpdate(DefaultSaveOrUpdateEventList  ener.java:93) 
[java] at org.hibernate.impl.SessionImpl.fireSave(SessionImp  l.java:563) 
[java] at org.hibernate.impl.SessionImpl.save(SessionImpl.ja  va:551) 
[java] at org.hibernate.impl.SessionImpl.save(SessionImpl.ja  va:547) 
[java] at hello.HelloWorld.main(Unknown Source) 
[java] Caused by: java.sql.SQLException: Table not found in statement [select max(MESSAGE_ID) from MESSAGES] 
[java] at org.hsqldb.jdbc.Util.throwError(Unknown Source) 
[java] at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unkno  wn Source) 
[java] at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Un  known Source) 
[java] at org.hibernate.jdbc.AbstractBatcher.getPreparedStat  ement(AbstractBatcher.java:534) 
[java] at org.hibernate.jdbc.AbstractBatcher.prepareSelectSt  atement(AbstractBatcher.java:145) 
[java] at org.hibernate.id.IncrementGenerator.getNext(Increm  entGenerator.java:107) 
[java] ... 11 more 
[java] Java Result: 1 
BUILD SUCCESSFUL 
Total time: 3 seconds  
Si alguien puede echarme un cable, lo agradecería mucho. Un saludo