[
https://issues.apache.org/jira/browse/OPENJPA-493?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jeremy Bauer resolved OPENJPA-493.
----------------------------------
Resolution: Fixed
Fix Version/s: 1.0.3
1.2.0
Fixed as part of subtask OPENJPA-648.
> openjpa.jdbc.Schema property set causes wrong SQL queries when reading
> OPENJPA_SEQUENCE_TABLE
> ---------------------------------------------------------------------------------------------
>
> Key: OPENJPA-493
> URL: https://issues.apache.org/jira/browse/OPENJPA-493
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 1.0.0, 1.0.1
> Environment: Windows XP, Java 5.0 IBM.
> Reporter: Przemek Koprowski
> Assignee: Jeremy Bauer
> Fix For: 1.2.0, 1.0.3
>
> Attachments: SchemaPropertyProblem.zip
>
>
> When openjpa.jdbc.Schema is defined inserting object into the database causes
> exception because of wrong SQL query generation.
> In the sample openjpa.jdbc.Schema="KB", generates SQL: SELECT SEQUENCE_VALUE
> FROM KB.KB.OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE WITH RR.
> This problem doesn't occur in version 0.9.7.
> Trace:
> <openjpa-1.0.1-r420667:592145 fatal store error>
> org.apache.openjpa.persistence.RollbackException: Attempt to update the
> sequence table "OPENJPA_SEQUENCE_TABLE" failed. The sequence table is
> typically created when you run the mappingtool's refresh action on any
> datastore identity class. If you have not run the mappingtool but want to
> create the sequence table, run:
> java org.apache.openjpa.jdbc.kernel.TableJDBCSeq -action add
> at
> org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:419)
> at TestCase.testL1ProductEasier(TestCase.java:30)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:615)
> at
> org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
> at
> org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
> at
> org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
> at
> org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
> at
> org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
> at
> org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
> at
> org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
> at
> org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
> at
> org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
> at
> org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: <openjpa-1.0.1-r420667:592145 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: Attempt to update the
> sequence table "OPENJPA_SEQUENCE_TABLE" failed. The sequence table is
> typically created when you run the mappingtool's refresh action on any
> datastore identity class. If you have not run the mappingtool but want to
> create the sequence table, run:
> java org.apache.openjpa.jdbc.kernel.TableJDBCSeq -action add
> at
> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3938)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:75)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:371)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:266)
> at
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
> at org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160)
> at
> org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager.java:557)
> at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:450)
> at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:426)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:541)
> at
> org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134)
> at
> org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:501)
> at
> org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2770)
> at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
> at
> org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:940)
> at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1892)
> at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1852)
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1770)
> at
> org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1292)
> at
> org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:861)
> at
> org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:408)
> ... 21 more
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Syntax error:
> Encountered "." at line 1, column 33. {SELECT SEQUENCE_VALUE FROM
> KB.KB.OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE WITH RR} [code=20000,
> state=42X01]
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:201)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:57)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:228)
> at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:163)
> at
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
> at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:152)
> at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:475)
> at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:455)
> at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:444)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:467)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:511)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:368)
> ... 41 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.