I was a while back, but it went like this.
In postgres, if you want autoincrement you set the sequences up and then you
just insert a record without trying to predict what the next id will be.
Postgres should look after this.
When I was looking at the SQL statements Cayenne was using, it was constantly
trying to include the id - thus causing problems with Postgres's autoincrement.
They seemed to think that Cayenne should just insert the record and let
postgres worry about doing the autoincrement.
I am just happy it works though .. not a big deal.
Quoting Bryan Lewis <brya..aine.rr.com>:
> Surprise to me. I use Postgres frequently and didn't run into any
> problems or custom sequences. I often switch between Oracle and
> Postgres without changing the default PK generation. My Postgres
> sequences are routine, created like so:
>
> create sequence pk_tablename
> INCREMENT 20 MINVALUE 1 START 200 CACHE 1;
>
> Why do the Postgres developers suspect Cayenne?
>
>
> Lindsay Steele wrote:
>
> > With Postgres, I found that I had to use a Custom Sequence - then put
> > in the sequence name and then use a Cached PK Size of 1.
> >
> > This wasn't exactly intuitive and Postgres developers think Cayenne
> > has issues - but it does seem to work.
> >
> >
> > WONDER wrote:
> >
> >> Hi,
> >>
> >> I have problem with PostGreSQL ver 8.1.3 using JDBC ver 8.2dev-501
> >> JDBC 3
> >> and Cayenne 1.2.B2.
> >>
> >> I use the Default Strategy to create the PKs using Cayenne. in the DB, i
> >> created the SEQ : pk_TableName. like pk_image for Table image.
> >>
> >> Sometimes I get the following error and sometimes it just work.
> >> Till now, I coulding find the logic behind.
> >>
> >> Anybody can help?
> >> Thanks.
> >>
> >> -------------------------------------------------
> >> Priority : INFO
> >>
> >> Class.Method(line):
> >>
> org.objectstyle.cayenne.access.QueryLogger.logQueryError(QueryLogger.java:43
> >>
> >> 9)
> >>
> >> Message: *** error.
> >>
> >> org.postgresql.util.PSQLException: ERROR: duplicate key violates unique
> >> constraint "image_pk"
> >>
> >> at
> >>
> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorI
> >>
> >> mpl.java:1513)
> >>
> >> at
> >>
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.ja
> >>
> >> va:1298)
> >>
> >> at
> >>
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:349)
> >>
> >>
> >> at
> >>
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statem
> >>
> >> ent.java:2559)
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.jdbc.BatchAction.runAsBatch(BatchAction.java:
> >>
> >> 164)
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.jdbc.BatchAction.performAction(BatchAction.ja
> >>
> >> va:114)
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAct
> >>
> >> ion.java:95)
> >>
> >> at
> >> org.objectstyle.cayenne.access.DataNode.performQueries(DataNode.java:309)
> >>
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.DataDomainFlushAction.runQueries(DataDomainFl
> >>
> >> ushAction.java:255)
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAc
> >>
> >> tion.java:177)
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:827)
> >>
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.DataDomain$2.transform(DataDomain.java:798)
> >>
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.DataDomain.runInTransaction(DataDomain.java:8
> >>
> >> 53)
> >>
> >> at org.objectstyle.cayenne.access.DataDomain.onSync(DataDomain.java:795)
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.DataContext.flushToParent(DataContext.java:12
> >>
> >> 17)
> >>
> >> at
> >>
> org.objectstyle.cayenne.access.DataContext.commitChanges(DataContext.java:11
> >>
> >> 21)
> >>
> >> at
> >>
> de.mrer.base.CayenneBaseComponent.commitChanges(CayenneBaseComponent.java:65
> >>
> >> )
> >>
> >> at ImageEditPage.uploadFile(ImageEditPage.java:99)
> >>
> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>
> >> at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
> >>
> >> )
> >>
> >> at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
> >>
> >> .java:25)
> >>
> >> at java.lang.reflect.Method.invoke(Method.java:585)
> >>
> >> at
> >>
> KeyValueCodingProtectedAccessor.methodValue(KeyValueCodingProtectedAccessor.
> >>
> >> java:54)
> >>
> >> at
> >>
> com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(NSKe
> >>
> >> yValueCoding.java:1160)
> >>
> >> at
> >>
> com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey
> >>
> >> (NSKeyValueCoding.java:1268)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1539)
> >>
> >> at
> >>
> com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValueCod
> >>
> >> ing.java:498)
> >>
> >> at
> >>
> com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.va
> >>
> >> lueForKeyPath(NSKeyValueCodingAdditions.java:212)
> >>
> >> at
> >>
> com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:1600)
> >>
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent(WOK
> >>
> >> eyValueAssociation.java:46)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOSubmitButton.invokeAction(WOSubmitButton
> >>
> >> .java:59)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen
> >>
> >> tContent.java:31)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen
> >>
> >> tContent.java:31)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen
> >>
> >> tContent.java:31)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOConditional.invokeAction(WOConditional.j
> >>
> >> ava:55)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon
> >>
> >> entReference.java:104)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at com.webobjects.appserver._private.WOForm.invokeAction(WOForm.java:82)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon
> >>
> >> entReference.java:104)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon
> >>
> >> entReference.java:104)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
> >>
> >> at com.webobjects.appserver.WOSession.invokeAction(WOSession.java:1168)
> >>
> >> at
> >>
> com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java:1375)
> >>
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
> >>
> >> paredPage(WOComponentRequestHandler.java:196)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
> >>
> >> paredSession(WOComponentRequestHandler.java:287)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
> >>
> >> paredApplication(WOComponentRequestHandler.java:322)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest(W
> >>
> >> OComponentRequestHandler.java:358)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest(WO
> >>
> >> ComponentRequestHandler.java:432)
> >>
> >> at
> >>
> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:13
> >>
> >> 06)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java
> >>
> >> :173)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:254
> >>
> >> )
> >>
> >> at java.lang.Thread.run(Thread.java:595)
> >>
> >>
> >> --------
> >> Priority : FATAL
> >>
> >> Class.Method(line):
> >>
> de.mrer.base.BaseComponent.validationFailedWithException(BaseComponent.java:
> >>
> >> 104)
> >>
> >> Message: de.mrer.exceptor.CustomException: [v.1.2B2 April 17 2006]
> >> Commit
> >> Exception
> >>
> >> ========================
> >>
> >> de.mrer.exceptor.CustomException: [v.1.2B2 April 17 2006] Commit
> >> Exception
> >>
> >> at
> >>
> de.mrer.base.CayenneBaseComponent.commitChanges(CayenneBaseComponent.java:74
> >>
> >> )
> >>
> >> at ImageEditPage.uploadFile(ImageEditPage.java:99)
> >>
> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>
> >> at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
> >>
> >> )
> >>
> >> at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
> >>
> >> .java:25)
> >>
> >> at java.lang.reflect.Method.invoke(Method.java:585)
> >>
> >> at
> >>
> KeyValueCodingProtectedAccessor.methodValue(KeyValueCodingProtectedAccessor.
> >>
> >> java:54)
> >>
> >> at
> >>
> com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(NSKe
> >>
> >> yValueCoding.java:1160)
> >>
> >> at
> >>
> com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey
> >>
> >> (NSKeyValueCoding.java:1268)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1539)
> >>
> >> at
> >>
> com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValueCod
> >>
> >> ing.java:498)
> >>
> >> at
> >>
> com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.va
> >>
> >> lueForKeyPath(NSKeyValueCodingAdditions.java:212)
> >>
> >> at
> >>
> com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:1600)
> >>
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent(WOK
> >>
> >> eyValueAssociation.java:46)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOSubmitButton.invokeAction(WOSubmitButton
> >>
> >> .java:59)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen
> >>
> >> tContent.java:31)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen
> >>
> >> tContent.java:31)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen
> >>
> >> tContent.java:31)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOConditional.invokeAction(WOConditional.j
> >>
> >> ava:55)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon
> >>
> >> entReference.java:104)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at com.webobjects.appserver._private.WOForm.invokeAction(WOForm.java:82)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon
> >>
> >> entReference.java:104)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon
> >>
> >> entReference.java:104)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna
> >>
> >> micGroup.java:101)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup
> >>
> >> .java:110)
> >>
> >> at
> >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
> >>
> >> at com.webobjects.appserver.WOSession.invokeAction(WOSession.java:1168)
> >>
> >> at
> >>
> com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java:1375)
> >>
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
> >>
> >> paredPage(WOComponentRequestHandler.java:196)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
> >>
> >> paredSession(WOComponentRequestHandler.java:287)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
> >>
> >> paredApplication(WOComponentRequestHandler.java:322)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest(W
> >>
> >> OComponentRequestHandler.java:358)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest(WO
> >>
> >> ComponentRequestHandler.java:432)
> >>
> >> at
> >>
> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:13
> >>
> >> 06)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java
> >>
> >> :173)
> >>
> >> at
> >>
> com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:254
> >>
> >> )
> >>
> >> at java.lang.Thread.run(Thread.java:595)
> >>
> >> -------------------------------------------------
> >>
> >>
> >>
> >
> >
>
This archive was generated by hypermail 2.0.0 : Thu Apr 20 2006 - 20:42:32 EDT