当前位置: 首页 > 面试题库 >

Eclipselink更新现有表

商飞翮
2023-03-14
问题内容

也许我弄错了,但是我虽然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" />


 类似资料:
  • 问题内容: 我有一个已经安排好的石英作业。我想更新与之关联的JobDataMap。如果我通过获得JobDataMap ,该地图是否“实时”?即。如果我更改它,它将保留在调度程序中吗?如果没有,我该如何坚持呢? 问题答案: 参见http://www.quartz- scheduler.org/docs/tutorial/TutorialLesson03.html : Job实例可以定义为“有状态”或

  • 我正在尝试在现有列表中添加一个新项目,但无法添加。当我调试时,它显示返回为true,但最终新项没有添加到列表中。 我的示例代码如下:Employee employee1=new Employee(5001,“BOB”,financeDept.getDepartment_name());employee2=新员工(5002,“SAM”,FinanceDepartment.getDepartment_

  • 我在JTA和Wildfly8中使用Eclipselink,问题是在提交用户事务并将数据插入数据库后,它不会更新相关实体,所以如果我重新加载页面或打开页面的新实例,它加载数据时不会插入行。

  • Mongo创建一个新文档,如果它不存在(必须具有1的)。如果它已经存在,它应该将所有值增加1。但这里的问题是,它每次都会添加另一个文档,而不是更新已经存在的文档。 如果文档已经存在,我如何增加值1,而不是每次添加另一个文档?在任何给定的时间,我只想要一个文档。

  • 我有两个实体具有@OneTomany(Entity1)&@ManyToOne(Entity2)双向关系。在@OneTomany关系中,我有@Cascading{Cascade.All}。但是当我在事务或方法中将具有@ManyToOne关系的实体的初始为false的boolean属性更改为true,然后又变回false时,它会导致数据库触发更新查询,将实体的boolean设置为false,这似乎是错

  • 我尝试记录JPA实体的任何更改。因此,每个实体都继承自一个抽象实体类,该类具有日志条目对象列表。 AbstractEntity类: LogEntry类: 我的方法是创建一个新的LogEntry对象,并在实体更新或持久化之前将其添加到实体的LogEntry列表中。 我尝试了以下解决方案: 几乎所有这些试验都使我能够更改受影响实体的属性(如名称或validTo)。但没有任何解决方案提供创建新LogEn