Sébastien Dante Ursini created OPENJPA-2297:
-----------------------------------------------
Summary: Unable to determine which sequences are owned by the
database (Postgresl dictionnary)
Key: OPENJPA-2297
URL: https://issues.apache.org/jira/browse/OPENJPA-2297
Project: OpenJPA
Issue Type: Bug
Components: jpa
Affects Versions: 2.1.1
Environment: OS : Windows Application : Apache Geronimo 3.0 Data
Reporter: Sébastien Dante Ursini
Error :
Unable to determine which sequences are owned by the database. OpenJPA will
consider all sequences suffixed with "_seq" as database managed.
This may result in im proper creation or removal of sequences with this suffix.
The original PostgreSQL driver exception is being logged for your reference.
...
SELECT pg_get_serial_sequence(?, ?)
...
The problem is related to the use of the underscore in table name. Let's
imagine you have an entity called SubscriptionEvent with an auto generated
field called id (GenerationType.IDENTITY).
You want OpenJPA to create a table named SUBSCRIPTION_EVENT by using the
following annotation to please you DBA with is favorite naming convention :
@Table(name="SUBSCRIPTION_EVENT")
The problem occurs when the class PostgresDictionary try to determine whether a
sequence is owned by the database using the method is isOwnedSequence. This
method use another method called buildNames to define what is the table name
and the column name to provide the parameters to the sql statement :
SELECT pg_get_serial_sequence(?, ?)
The argument provided to buildNames according to the name provided in the
annotation @Table and the identity field is : "subscription_event_id".
BuildNames split this string using the underscore as separator interpreting
this :
Table name : subscription
Column name : event_id
instead of
Table name : subscription_event
Column name : id
As a workaround you have to remove the underscore in you table or field name.
But it is in my opinion a bug to rely on the underscore to split the table from
the column name.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira