也许我弄错了,但是我虽然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
此后,继续进行以下操作。
我是在做错什么还是错误?
从EclipseLink 2.4开始,您可以在持久性单元的规范中使用它:
<property name="eclipselink.ddl-generation" value="create-or-extend-tables" />