採用Spring框架、JPA操作數據庫開發一個小網站過程中,遇到需要將數據庫從Oracle移植到MySQL,在進行單元測試時遇到如下錯誤:
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown table 'SEQ_GEN_IDENTITY' in field list
Error Code: 1109
Call: SELECT SEQ_GEN_IDENTITY.NEXTVAL FROM DUAL
Query: ValueReadQuery()
一開始以爲是Entity的主鍵生成策略有問題:@GeneratedValue(strategy=GenerationType.IDENTITY)
經過測試,發現問題出在
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="oracleDataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.TopLinkJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="false" />
<property name="databasePlatform"
value="oracle.toplink.essentials.platform.database.oracle.OraclePlatform" />
</bean>
</property>
<property name="loadTimeWeaver">
<bean class="com.test.springmvc.util.MyClassLoader" />
</property>
</bean>