采用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>