我用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脚本,我右键单击该项目,然后选择JPATools>从实体生成表…然后在打开的架构生成对话框中选择Sql脚本。根据本文档,我希望脚本以我指定的名称在src/main/resources/sql/postgresql/
下可用,但文件一直在项目的根目录下创建,名称分别为dropDDL.sql
和createDDL.sql
。就好像我在persistence.xml
中指定的内容被忽略了一样。我开始怀疑它的内容是否被使用了。
我试过:
- 将
eclipselink.ddl-generation
定义为所有三个允许的值(create-tables
…(,但无效 - 使用等效的
javax.persistence.schema-generation
属性也无济于事
是否有我不知道的微妙之处?或者一些额外的配置?也许我完全错了,这些房产与达利无关?
这完全是一团糟,但这里是您需要的:
eclipselink.ddl-generation
:这控制是否生成DDLeclipselink.ddl-generation.output-mode
:必须将其设置为both
或sql-script
,否则任何位置的任何文件都不会写入DDLeclipselink.application-location
:这被设置为将包含DDL输出文件的绝对路径eclipselink.create-ddl-jdbc-filename
:这是一个以文件名结尾的路径,该文件名相对于eclipselink.application-location
属性值提供的绝对路径如果未指定eclipselink.application-location
,则会忽略此属性eclipselink.drop-ddl-jdbc-filename
:这是一个以文件名结尾的路径,该文件名相对于eclipselink.application-location
属性值提供的绝对路径如果未指定eclipselink.application-location
,则会忽略此属性
在您的示例中,您缺少eclipselink.ddl-generation.output-mode
。