JPA和toplink create-table如果它们尚不存在?

Nil*_*ils 6 java orm jpa persistence.xml

看起来jpa是让我提出很多问题的东西.

添加了这个

<property name="toplink.ddl-generation" value="create-tables"/>
Run Code Online (Sandbox Code Playgroud)

我的JPA应用程序总是在运行时创建表,这会导致表已存在时出现异常.我希望JPA检查表是否已经存在,如果没有创建它们,但是我找不到上面的属性的值,这样做.

所以如果我把它关闭,有没有办法在某个时候手动告诉JPA创建所有表?

这里更新是我得到的例外

Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'tags' already exists
Error Code: 1050
Call: CREATE TABLE tags (ID BIGINT AUTO_INCREMENT NOT NULL, NAME VARCHAR(255), OCCURRENCE INTEGER, PRIMARY KEY (ID))
Run Code Online (Sandbox Code Playgroud)

MySQLSyntaxErrorException?现在这肯定是错的

Jör*_*ann 5

根据http://www.oracle.com/technology/products/ias/toplink/JPA/essentials/toplink-jpa-extensions.html#Java2DBSchemaGen toplink没有更新退出表的选项,我不确定是否无论如何,我相信它会做正确的事情.您可以配置toplink以生成sql脚本,然后您必须手动执行以创建所有表.文件名和位置可以像这样配置:

<property name="toplink.ddl-generation" value="create-tables"/>
<property name="toplink.ddl-generation.output-mode" value="sql-script"/>
<property name="toplink.create-ddl-jdbc-file-name" value="createDDL.sql"/>
<property name="toplink.drop-ddl-jdbc-file-name" value="dropDDL.sql"/>
<property name="toplink.application-location" value="/tmp"/>
Run Code Online (Sandbox Code Playgroud)