I am having troubles with generating database schema with Hibernate Tools. This is my ant file
<project name="Schema generator for MySQL database" basedir=".">
<description>
This file is used for running Hibernate Tools Ant task.
It is used to generate database schema based on hibernate configuration
</description>
<path id="toolslib">
<path location="lib/hibernate-tools.jar" />
<path location="lib/hibernate-3.2.4.ga.jar" />
<path location="lib/freemarker.jar" />
<path location="lib/mysql-connector-java-5.1.13" />
<path location="lib/dom4j-1.6.1.jar" />
<path location="hibernate_mappings/Address.hbm.xml" />
</path>
<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="toolslib" />
<hibernatetool destdir="${build.dir}/generated">
<classpath>
<path location="${build.dir}/classes" />
</classpath>
<configuration configurationfile="hibernate.cfg.xml" />
<hbm2ddl />
<hbm2dao />
</hibernatetool>
</project>
I get this error when running ant task:
C:\work\gwt_workspace\billing-cms\dao\src\main\resources\build.xml:19: org.hibernate.MappingNotFoundException: resource: hibernate_mappi开发者_开发知识库ngs/Address.hbm.xml not found
My filesystem path hierarchy is like this:
+resources
-hibernate_mappings
-Address.hbm.xml
-User.hbm.xml
-etc..
-hibernate.cfg.xml
-build.xml
I have my mappings defined inside hibernate.hbm.xml like this:
<mapping resource="hibernate_mappings/Address.hbm.xml" />
You don't need Ant to do this. If you just run one Hibernate app (e.g., a dummy test or main), it'll run hbm2ddl for you.
Make sure the .hbm.xml files are in your Ant classpath when you run. Perhaps that's the problem. (Didn't look closely enough at your build.xml to know; just throwing it out there.)
Here's a sample Hibernate config that works, including hbm2ddl. Pattern yours after this:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate?autoReconnect=true</property>
<property name="connection.username">hibernate</property>
<property name="connection.password">hibernate</property>
<property name="connection.pool_size">1</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="show_sql">true</property>
<property name="generate_statistics">true</property>
<property name="query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="cache.use_minimal_puts">false</property>
<property name="cache.use_query_cache">false</property>
<property name="order_updates">false</property>
<property name="hbm2ddl.auto">create-drop</property>
<property name="current_session_context_class">thread</property>
<mapping resource="hibernate/policy/persistence/hibernate/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
精彩评论