You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by catalina wei <ca...@gmail.com> on 2008/01/10 17:41:38 UTC

Re: [jira] Updated: (OPENJPA-472) iSeries DB2 problem with using @GeneratedValue(strategy=GenerationType.SEQUENCE ...)

Hi Ken,
I have committed your patch for OPENJPA-471 and OPENJPA-472.
Please verify if your testcase runs OK.
Thanks.
Catalina
On 12/19/07, Ken Maruyama (JIRA) <ji...@apache.org> wrote:
>
>
>     [
> https://issues.apache.org/jira/browse/OPENJPA-472?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel]
>
> Ken Maruyama updated OPENJPA-472:
> ---------------------------------
>
>    Description:
> I get the following error when I try to insert new row to a table that
> uses sequence object for identity.
>
> <openjpa-1.0.1-r420667:592145 fatal store error>
> org.apache.openjpa.persistence.RollbackException: [SQL0029] INTO clause
> missing from embedded statement. {VALUES NEXTVAL FOR SEC_FAPKDMC} [code=-29,
> state=42601]
>        at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> EntityManagerImpl.java:419)
>        at xxx.xxx.xxx.xxx..main(JPA_test_03.java:66)
> Caused by: <openjpa-1.0.1-r420667:592145 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: [SQL0029] INTO clause
> missing from embedded statement. {VALUES NEXTVAL FOR SEC_FAPKDMC} [code=-29,
> state=42601]
>        at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException (
> DBDictionary.java:3938)
>        at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(
> DB2Dictionary.java:464)
>        at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:97)
>        at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:83)
>        at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:59)
>        at org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next (
> AbstractJDBCSeq.java:65)
>        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)
>        ... 1 more
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: [SQL0029]
> INTO clause missing from embedded statement. {VALUES NEXTVAL FOR
> SEC_FAPKDMC} [code=-29, state=42601]
>        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.kernel.NativeJDBCSeq.getSequence(
> NativeJDBCSeq.java:274)
>        at org.apache.openjpa.jdbc.kernel.NativeJDBCSeq.nextInternal(
> NativeJDBCSeq.java:211)
>        at org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(
> AbstractJDBCSeq.java:60)
>        ... 19 more
>
> I have the following in persistence.xml
>
> <property name="openjpa.jdbc.DBDictionary" value="db2"/>
> <property name="openjpa.ConnectionDriverName" value="
> com.ibm.as400.access.AS400JDBCDriver"/>
>
> I was able to fix the problem by modifying the following code.
>
> I added:
> nextSequenceQuery = "SELECT NEXTVAL FOR {0} FROM "
>            + "SYSIBM.SYSDUMMY1";
>
> to:
> package: org.apache.openjpa.jdbc.sql
> Class: DB2Dictionary
> method: public void connectedConfiguration(Connection conn) throws
> SQLException
>
> right after the code:
> case db2ISeriesV5R4OrLater:
>
> iSeries that have earlier versions might have the same problem.
> If there is a problem, the same code should probably be added to "case
> db2ISeriesV5R3OrEarlier: " section.
>
> I'm new to OpenJPA, so it will be great if some one can verify that the
> fix was done appropriately.
>
> Thank you,
>
> Ken Maruyama
>
>
> was:
> I get the following error when I try to insert new row to a table that
> uses sequence object for identity.
>
> <openjpa-1.0.1-r420667:592145 fatal store error>
> org.apache.openjpa.persistence.RollbackException: [SQL0029] INTO clause
> missing from embedded statement. {VALUES NEXTVAL FOR SEC_FAPKDMC} [code=-29,
> state=42601]
>        at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> EntityManagerImpl.java:419)
>        at xxx.xxx.xxx.xxx..main(JPA_test_03.java:66)
> Caused by: <openjpa-1.0.1-r420667:592145 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: [SQL0029] INTO clause
> missing from embedded statement. {VALUES NEXTVAL FOR SEC_FAPKDMC} [code=-29,
> state=42601]
>        at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException (
> DBDictionary.java:3938)
>        at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(
> DB2Dictionary.java:464)
>        at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:97)
>        at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:83)
>        at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:59)
>        at org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next (
> AbstractJDBCSeq.java:65)
>        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)
>        ... 1 more
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: [SQL0029]
> INTO clause missing from embedded statement. {VALUES NEXTVAL FOR
> SEC_FAPKDMC} [code=-29, state=42601]
>        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.kernel.NativeJDBCSeq.getSequence(
> NativeJDBCSeq.java:274)
>        at org.apache.openjpa.jdbc.kernel.NativeJDBCSeq.nextInternal(
> NativeJDBCSeq.java:211)
>        at org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(
> AbstractJDBCSeq.java:60)
>        ... 19 more
>
> I have the following in persistence.xml
>
> <property name="openjpa.jdbc.DBDictionary" value="db2"/>
> <property name="openjpa.ConnectionDriverName" value="
> com.ibm.as400.access.AS400JDBCDriver"/>
>
> I was able to fix the problem by modifying the following code.
>
> I added:
> nextSequenceQuery = "SELECT NEXTVAL FOR {0} FROM "
>            + "SYSIBM.SYSDUMMY1";
>
> to:
> package: org.apache.openjpa.jdbc.sql
> method: public void connectedConfiguration(Connection conn) throws
> SQLException
>
> right after the code:
> case db2ISeriesV5R4OrLater:
>
> iSeries that have earlier versions might have the same problem.
> If there is a problem, the same code should probably be added to "case
> db2ISeriesV5R3OrEarlier: " section.
>
> I'm new to OpenJPA, so it will be great if some one can verify that the
> fix was done appropriately.
>
> Thank you,
>
> Ken Maruyama
>
>
>
> > iSeries DB2 problem with using @GeneratedValue(strategy=
> GenerationType.SEQUENCE ...)
> >
> -------------------------------------------------------------------------------------
>
> >
> >                 Key: OPENJPA-472
> >                 URL: https://issues.apache.org/jira/browse/OPENJPA-472
> >             Project: OpenJPA
> >          Issue Type: Bug
> >          Components: sql
> >    Affects Versions: 1.0.1
> >         Environment: iSeries V5R4, DB2, jt400.jar
> >            Reporter: Ken Maruyama
> >
> > I get the following error when I try to insert new row to a table that
> uses sequence object for identity.
> > <openjpa-1.0.1-r420667:592145 fatal store error>
> org.apache.openjpa.persistence.RollbackException: [SQL0029] INTO clause
> missing from embedded statement. {VALUES NEXTVAL FOR SEC_FAPKDMC} [code=-29,
> state=42601]
> >       at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> EntityManagerImpl.java:419)
> >       at xxx.xxx.xxx.xxx..main(JPA_test_03.java:66)
> > Caused by: <openjpa-1.0.1-r420667:592145 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: [SQL0029] INTO clause
> missing from embedded statement. {VALUES NEXTVAL FOR SEC_FAPKDMC} [code=-29,
> state=42601]
> >       at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException (
> DBDictionary.java:3938)
> >       at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(
> DB2Dictionary.java:464)
> >       at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:97)
> >       at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:83)
> >       at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(
> SQLExceptions.java:59)
> >       at org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next (
> AbstractJDBCSeq.java:65)
> >       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)
> >       ... 1 more
> > Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: [SQL0029]
> INTO clause missing from embedded statement. {VALUES NEXTVAL FOR
> SEC_FAPKDMC} [code=-29, state=42601]
> >       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.kernel.NativeJDBCSeq.getSequence(
> NativeJDBCSeq.java:274)
> >       at org.apache.openjpa.jdbc.kernel.NativeJDBCSeq.nextInternal(
> NativeJDBCSeq.java :211)
> >       at org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(
> AbstractJDBCSeq.java:60)
> >       ... 19 more
> > I have the following in persistence.xml
> > <property name="openjpa.jdbc.DBDictionary " value="db2"/>
> > <property name="openjpa.ConnectionDriverName" value="
> com.ibm.as400.access.AS400JDBCDriver"/>
> > I was able to fix the problem by modifying the following code.
> > I added:
> > nextSequenceQuery = "SELECT NEXTVAL FOR {0} FROM "
> >             + "SYSIBM.SYSDUMMY1";
> > to:
> > package: org.apache.openjpa.jdbc.sql
> > Class: DB2Dictionary
> > method: public void connectedConfiguration(Connection conn) throws
> SQLException
> > right after the code:
> > case db2ISeriesV5R4OrLater:
> > iSeries that have earlier versions might have the same problem.
> > If there is a problem, the same code should probably be added to "case
> db2ISeriesV5R3OrEarlier: " section.
> > I'm new to OpenJPA, so it will be great if some one can verify that the
> fix was done appropriately.
> > Thank you,
> > Ken Maruyama
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>