Somebody beat me to Jira and has filed an issue there regarding this.
I tried this in Derby and it happens too, so it's not database-specific.
Adam Hardy on 16/01/08 14:12, wrote:
I use TableGenerator mapping for primary keys on all my entity mappings.
The XML for the table-generator is in the thread below.
When I set up my app to use H2, the exact problem is as given in the
exception: the SQL statement generated by OpenJPA for H2 refers to the
table in the schema as
DEV.DEV.KEY_SEQUENCE
Obviously OpenJPA has prefixed the table name with the schema name twice
instead of once.
This is only when set up to use H2. When running against MySQL (which
has no notion of schemas), there is no problem.
I guess an easy further test would be to run the test against a 3rd
database which does implement schemas. I have already tried Hypersonic -
but there are other issues with that which prevent testing. I shall try
derby or postgres soon. Theoretically I may have configured the schema
in 2 different places in the config, but that situation should be
catered for, methinks.
Regards
Adam
David Beer on 15/01/08 22:22, wrote:
Can you give at little more detail as to the exact problem with H2 or
how you managed to solve the issue.
Adam Hardy wrote:
Realised the term is TableGenerator, not KEY_SEQUENCE, for the issue
that is causing problems here.
I narrowed it down to H2. With Mysql, there is no problem.
Adam Hardy on 15/01/08 11:55, wrote:
Doing a project with no dependency on any one database vendor, I am
using KEY_SEQUENCE tables to manage my primary keys. This was
working fine until I introduced a schema name. Now I get the
following exception:
org.apache.openjpa.lib.jdbc.ReportingSQLException: Table DEV not
found; SQL statement:
SELECT LAST_KEY FROM DEV.DEV.KEY_SEQUENCE WHERE TABLE_SEQ = ? FOR
UPDATE [42S02-64] {SELECT LAST_KEY FROM DEV.DEV.KEY_SEQUENCE WHERE
TABLE_SEQ = ? FOR UPDATE} [code=42102, state=42S02]
My schema name is DEV and OpenJPA has prefixed it onto the table
name twice! I configure the schema name via the database connection
parameters, e.g.
openjpa.jdbc.Schema=DEV
This is my KEY_SEQUENCE config if it helps:
<table-generator name="codeKeySequence" table="KEY_SEQUENCE"
pk-column-name="TABLE_SEQ" value-column-name="LAST_KEY"
pk-column-value="CODE">
</table-generator>
This is happening in both OpenJPA v 1.0.1 and 1.1.0. I'll have to
look into this further now to see if it is a problem just with the
org.apache.openjpa.jdbc.sql.H2Dictionary that I am using.
Does anyone have key sequence tables in a named schema working in
any database?