Hello,
the problem of this post is similar to 
http://forum.hibernate.org/viewtopic.php?t=967519, but I guess I have found the reason of the problem (though no solution yet ...)
Hibernate-Tools version: 
3.2-beta8
The problem is that invoking hbmtemlate with the daohome.ftl from hibernate-tools causes an error when using a composite-id. It seems like hbmtemplate tries to create DAO classes for the composite-id classes, but fails on the undefined clazz.hasNaturalId() and clazz.entityName. (I found out the latter when removing the code for generating the findByNaturalId method from the daohome.ftl).
Is there a way to get hbmtemplate work in such a setting? I don't really know how Freemarker works and how the clazz.hasNaturalId() and clazz.entityName are affected by a mapping document, so unfortunately I'm completely helpless at this point. I've posted the error, a sample hibernate mapping document and my Ant task below. hbm2java works, but the hbmtemplate task fails.
Best Regards,
Matthias
Here's the error:
Code:
[hibernatetool] org.hibernate.tool.hbm2x.ExporterException: Error while processing template dao/daohome.ftl
[hibernatetool] freemarker.core.InvalidReferenceException: Expression clazz.hasNaturalId is undefined on line 161, column 6 in dao/daohome.ftl.
And here's an example hibernate mapping file that should cause the error with clazz.hasNaturalId(). It simply contains a composite-id with 2 key properties.
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 28.11.2006 15:30:24 by Hibernate Tools 3.2.0.beta8 -->
<hibernate-mapping>
    <class name="eg.hibernate.CacertT" table="CACERT_T" lazy="false">
        <composite-id name="Id" class="eg.hibernate.CacertTPK">
            <key-property name="CacertIssuerId" type="java.lang.Long">
                <column name="CACERT_ISSUER_ID" />
            </key-property>
            <key-property name="CacertSerialNumber" type="java.lang.Long">
                <column name="CACERT_SERIAL_NUMBER" />
            </key-property>
        </composite-id>
    </class>
</hibernate-mapping>
for hbmtemplate I've placed all relevant folders from the hibernate-tools.jar in a hiberatetemplates folder. My Ant task looks like this:
Code:
      <hibernatetool destdir="${project.source.directory}" templatepath="${basedir}/${etc.dir}/hibernatetemplates/">
        <classpath>
          <path refid="project.run.classpath" />
          <path location="${project.source.directory}" />
        </classpath>
        <configuration configurationfile="${etc.dir}/hibernate.cfg.xml" />
        <hbm2java jdk5="true" />
        <hbmtemplate templatepath="${basedir}/${etc.dir}/hibernatetemplates/" template="dao/daohome.ftl">
          <property key="jdk5" value="true" />
          <property key="ejb3" value="false" />
        </hbmtemplate>
      </hibernatetool>