Java 如何使用JPA工具和EclipseLink在特定位置生成SQL脚本?

Java 如何使用JPA工具和EclipseLink在特定位置生成SQL脚本?,java,jpa,eclipselink,dali,Java,Jpa,Eclipselink,Dali,我用EclipseLink 2.7.0建立了一个项目,我正在Eclipse中使用Dali。我试图使用上下文菜单生成SQL脚本,但在将生成的SQL脚本输出到所需位置时遇到问题 persistence.xml文件包含以下内容: <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> <property name="ecl

我用EclipseLink 2.7.0建立了一个项目,我正在Eclipse中使用Dali。我试图使用上下文菜单生成SQL脚本,但在将生成的SQL脚本输出到所需位置时遇到问题

persistence.xml
文件包含以下内容:

    <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
    <property name="eclipselink.application-location" value="src/main/resources/sql/postgresql/"/>
    <property name="eclipselink.create-ddl-jdbc-file-name" value="051-createDDL.sql"/>
    <property name="eclipselink.drop-ddl-jdbc-file-name" value="050-dropDDL.sql"/>

要生成SQL脚本,我右键单击项目,然后选择JPA工具从实体生成表…,然后在打开的模式生成对话框中选择SQL脚本。 根据,我希望脚本可以在
src/main/resources/sql/postgresql/
下使用我指定的名称提供,但是文件会一直在项目根目录下的名称
dropDDL.sql
createDDL.sql
下创建。这就好像我在
persistence.xml
中指定的内容被忽略了一样。我开始怀疑它的内容是否被使用过

我试过:

  • 将eclipselink.ddl generation定义为所有三个允许的值(
    create tables
    …),但无效
  • 使用等价的
    javax.persistence.schema generation
    properties,也无济于事

有没有我不知道的微妙之处?或者一些额外的配置?也许我完全弄错了,酒店与Dali没有任何关系?

这真是一团糟,但以下是您需要的:

  • :此选项控制是否生成DDL
  • :必须将其设置为
    两者
    sql脚本
    ,否则任何地方都不会向任何文件写入DDL
  • :设置为包含DDL输出文件的绝对路径
  • :这是一个以文件名终止的路径,该文件名相对于
    eclipselink.application location
    属性值提供的绝对路径如果未指定
    eclipselink.application location
    ,则忽略此属性。
  • :这是一个以文件名终止的路径,该文件名相对于
    eclipselink.application location
    属性值提供的绝对路径如果未指定
    eclipselink.application location
    ,则忽略此属性。
在您的示例中,您丢失了。

即使使用此配置(即,
应用程序位置
设置为绝对路径,并且指定了
ddl生成。输出模式
),Dali仍在项目根目录下生成文件。我已经完全放弃了,因为我已经在我的这个新项目上初始化了数据库。我逐渐了解到,当Dali从实体生成表时,不考虑
persistence.xml
中定义的属性。