In MySQL explicitly specifying openjpa.jdbc.Schema with default schema gives an
error on first time EM access if mapping is already done
----------------------------------------------------------------------------------------------------------------------------------------
Key: OPENJPA-592
URL: https://issues.apache.org/jira/browse/OPENJPA-592
Project: OpenJPA
Issue Type: Bug
Components: jdbc
Reporter: Jason Zheng
Suppose we have an entity "Employee" and we have the following properties
specified in persistence.xml:
<property name='openjpa.jdbc.SynchronizeMappings'
value='buildSchema(ForeignKeys=true)' />
<property name='openjpa.jdbc.Schema' value='jpa' />
OpenJPA should create table "jpa:employee" if it does not exist in the
database, and do nothing if the table already exists.
But in MySQL, it tries to create the table when the table already exists in
database, and we will get the following exception because of this:
<openjpa-1.1.0-SNAPSHOT-r422266:647033 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Table 'employee' already
exists {stmnt 7294825 CREATE TABLE jpa.employee (id BIGINT NOT NULL, PRIMARY
KEY (id)) TYPE = innodb} [code=1050, state=42S01]
at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:553)
at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
at
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
...
This is because MySQL doesn't have concept of schema, and the column metadata
from MySQL doesn't contain schema information. Hence OpenJPA fails to find the
table although the table exists in database.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.