When running the reverse mapping tool on Oracle we are unable to identify the primary key column for a table.
The root cause is the prepared statement generated by OracleDictionary. The parameter value uses the qualified name for the table instead of the unqualified name (e.g. SCOTT.SimpleEntity instead of SimpleEntity).
The output of the tool will look something like this :
669 persistence-tests INFO [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.OracleDictionary".
3128 persistence-tests INFO [main] openjpa.Tool - ReverseMappingTool : generating classes.
3132 persistence-tests INFO [main] openjpa.MetaData - Table "SCOTT.SIMPLEENTITY" could not be reverse mapped. This means that the table does not have a primary key (primary keys are required to establish unique identifiers for all persistent objects) and does not match a known pattern for a table used for cross-reference or value collections.
3133 persistence-tests INFO [main] openjpa.Tool - Generating annotations.
3282 persistence-tests INFO [main] openjpa.Tool - Writing generated class source code.
3283 persistence-tests INFO [main] openjpa.Tool - Writing generated metadata.