Передача параметра в hbm2ddl - PullRequest
2 голосов
/ 03 марта 2010

У меня есть параметризованный файл persistence.xml. Я пытаюсь сгенерировать схему ddl, используя hbm2ddl. Как я могу передать параметры этому инструменту?

Мой файл persistence.xml выглядит как

<property name="hibernate.connection.driver_class" value="${persistence.connection.driver.class}"/>
<property name="hibernate.dialect" value="${persistence.dialect}"/>
<property name="hibernate.connection.password" value="${persistence.password}"/>
<property name="hibernate.connection.username" value="${persistence.username}"/>

Когда я запускаю, значения параметров сервера передаются как JAVA_OPTS (используя -Dpersistence.dialect = value). И это хорошо работает.

Как мне это сделать с hbm2ddl?

Я пытался собственности

<hibernatetool destdir="${gensrc.sql.dir}">
  <property key="persistence.dialect" value="org.hibernate.dialect.Oracle9Dialect"/>
  <jpaconfiguration persistenceunit="${persistence.unit.name}" />
  <classpath>
   <!-- it is in this classpath you put your classes dir,
       and/or jpa persistence compliant jar -->
    <path location="${build.classes.dir}" />
  </classpath>
  <hbm2ddl export="false" drop="true" outputfilename="create_${ant.project.name}.sql" format="true" haltonerror="true" />
</hibernatetool>

Но он не получает это значение. Это показывает мне ошибку.

build.xml:160: org.hibernate.HibernateException: Dialect class not found: ${persistence.dialect}

1 Ответ

3 голосов
/ 04 марта 2010

Вы можете указать диалект через propertyfile. Объявите это в hibernate.properties:

hibernate.dialect=org.hibernate.dialect.Oracle9Dialect

И используйте это так:

<jpaconfiguration propertyfile="hibernate.properties"/>
...