我正在使用JPA2
,EclipseLink
。我正在嘗試向現有數據庫和表中添加一個新列。我在POJO類MyTable中添加了一個新字段。儘管有create-or-extend-tables
屬性,新列沒有得到加起來。JPA2:create-or-extend-tables沒有將新表擴展爲新列
這是我的persistence.xml
文件。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="idpersistance">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.id.service.db.pojo.AppTable</class>
<class>com.id.service.db.pojo.MyTable</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"></property>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:2705/mydb"></property>
<property name="javax.persistence.jdbc.user" value="user"></property>
<property name="javax.persistence.jdbc.password" value="password"></property>
<property name="eclipselink.ddl-generation" value="create-or-extend-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
<property name="eclipselink.id-validation" value="NULL"></property>
<property name="eclipselink.logging.level" value="FINE"/>
<property name="javax.persistence.lock.timeout" value="1000"/>
<property name="eclipselink.target-database" value="MySQL"/>
</properties>
</persistence-unit>
</persistence>
我不知道爲什麼新列沒有被添加。我找回以下錯誤:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: null, message from server: "Unknown column 'newcol' in 'field list'"
Error Code: 1054
的jar
文件我使用:
eclipselink.jar (2.5.2)
javax.persistence_2.1.0.v201304241213.jar
請讓我知道,如果任何事情在我persistence.xml
文件丟失。
任何幫助被讚賞。
更新: 我已經調試到EclipseLink
代碼,發現它不試圖產生新列,它在EntityManagerFactoryProvider
類在extendDefaultTables()
方法將引發錯誤,並說表已經存在,並從該方法返回。
在DatasourceAccessor
類的incrementCallCount()
方法中有一個名爲useExternalConnectionPooling
的字段,如果我手動將此字段設置爲true。然後新列成功生成。由於該字段爲假,EclipseLink
未觸發擴展。我不確定,如果這是正確的領域。
請參閱http://stackoverflow.com/questions/13372213/eclipselink-create-or-extend-tables-not-working-unknown-column – 2014-11-06 08:42:09
這並不適用於我。我仍然看到同樣的問題。 – User12111111 2014-11-06 09:46:23
表創建的SQL顯示什麼? – Chris 2014-11-06 14:59:31