java - 将参数传递给 hbm2ddl

标签 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 执行此操作?

我尝试过属性(property)

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

最佳答案

您可以通过propertyfile指定方言。在 hibernate.properties 中声明它:

hibernate.dialect=org.hibernate.dialect.Oracle9Dialect

并像这样使用它:

<jpaconfiguration propertyfile="hibernate.properties"/>

关于java - 将参数传递给 hbm2ddl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2371747/

相关文章:

java - Maven:Hibernate 版本错误?

java - 自定义约束 validator 中的 Autowiring 存储库为空

java - 如何使用 EclipseLink 加入提取而不是选择提取?

java - JPA PessimisticLockScope.NORMAL 和锁定 "relationships"

java - 将 maven 创建的 jar 文件安装到本地 repo

java - 在 Logback 将 c3po 登录转发到文件

java - 在@PostUpdate中获取@PreUpdate值

java - JPA & Criteria API - 仅选择特定列

java - 使用 JPA/Hibernate/MySQL 测试 JTA XA 分布式事务

java - 如何使用 jsoup 从这个 html 标签中获取文本?