Hibernate hbm2ddl пути к файлам муравья - PullRequest
1 голос
/ 16 сентября 2010

У меня проблемы с генерацией схемы базы данных с помощью Hibernate Tools. Это мой файл муравья

<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>

Я получаю эту ошибку при запуске задачи муравья:

C: \ work \ gwt_workspace \ billing-cms \ dao \ src \ main \ resources \ build.xml: 19: org.hibernate.MappingNotFoundException: ресурс: hibernate_mappings / Address.hbm.xml не найден

Моя иерархия путей к файловой системе выглядит следующим образом:

+resources
   -hibernate_mappings
      -Address.hbm.xml
      -User.hbm.xml
      -etc..
   -hibernate.cfg.xml
   -build.xml

Мои отображения определены внутри hibernate.hbm.xml следующим образом:

<mapping resource="hibernate_mappings/Address.hbm.xml" />

1 Ответ

0 голосов
/ 16 сентября 2010

Вам не нужен муравей, чтобы сделать это. Если вы просто запустите одно приложение Hibernate (например, фиктивный тест или основное), оно запустит для вас hbm2ddl.

Убедитесь, что файлы .hbm.xml находятся в вашем пути к классам Ant при запуске. Возможно, это проблема. (Не посмотрел достаточно внимательно на ваш build.xml, чтобы знать; просто выбросил его туда).

Вот пример конфигурации Hibernate, которая работает, включая hbm2ddl. Узор после этого:

<!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>
...