小编典典

Eclipselink更新现有表

java

也许我弄错了,但是我虽然JPA能够更新现有表(更改了添加列的模型),但在我的情况下却无法正常工作。

我可以在日志中看到eclipselink尝试创建它,但是由于它已经存在而失败。它不会尝试更新以添加该列,而是继续进行。

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jwrestling"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>
<property name="eclipselink.logging.level" value="INFO"/>

这是带有更改的表(添加了在线列)

[EL警告]:2010-05-31 14:39:06.044--ServerSession(16053322)-异常[EclipseLink-4002](Eclipse Persistence Services-2.1.0.v20100517-r7246):org.eclipse.persistence.exceptions .DatabaseException
内部异常:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表“帐户”已存在
错误代码:1050
呼叫:CREATE TABLE帐户(ID整数非空,用户名VARCHAR(32)非空,SECURITY_KEY VARCHAR(255)非空,电子邮件VARCHAR(64)非空,状态VARCHAR(8)非空,TIMEDATE DATETIME非空,PASSWORD VARCHAR (255)非空,ONLINE TINYINT(1)默认值0非空,主键(ID))
查询:DataModifyQuery(sql =“ CREATE TABLE account(ID INTEGER NOT NULL,USERNAME VARCHAR(32)NOT NULL,SECURITY_KEY VARCHAR(255)NOT NULL,EMAIL VARCHAR(64)NOT NULL,STATUS VARCHAR(8)NOT NULL,TIMEDATE DATETIME非空,密码VARCHAR(255)非空,在线TINYINT(1)默认0非空,主键(ID))“)
[EL警告]:2010-05-31 14:39:06.074--ServerSession(16053322)-异常[EclipseLink-4002](Eclipse Persistence Services-2.1.0.v20100517-r7246):org.eclipse.persistence.exceptions .DatabaseException

此后,继续进行以下操作。

我是在做错什么还是错误?


阅读 265

收藏
2020-12-03

共1个答案

小编典典

从EclipseLink 2.4开始,您可以在持久性单元的规范中使用它:

<property name="eclipselink.ddl-generation" value="create-or-extend-tables" />
2020-12-03