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?



Reply via email to