openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adam Hardy <adam....@cyberspaceroad.org>
Subject Re: using TableGenerator for 1ary keys
Date Wed, 16 Jan 2008 14:12:55 GMT
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?


Mime
View raw message