将参数传递给hbm2ddl

时间:2010-03-03 13:47:17

标签: java hibernate jpa ant hbm2ddl

我有参数化的persistence.xml。我正在尝试使用hbm2ddl生成ddl架构。如何将参数传递给此工具?

我的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 个答案:

答案 0 :(得分:3)

您可以通过propertyfile指定方言。在hibernate.properties

中声明它
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect

并像这样使用它:

<jpaconfiguration propertyfile="hibernate.properties"/>